{
 "cells": [
  {
   "cell_type": "markdown",
   "metadata": {},
   "source": [
    "# 分类训练"
   ]
  },
  {
   "cell_type": "markdown",
   "metadata": {},
   "source": [
    "## 机器学习的Hello World，一个新的分类算法，都会看看在MNIST上的执行结果"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 1,
   "metadata": {},
   "outputs": [
    {
     "data": {
      "text/plain": [
       "b'\\x00\\x00\\x00\\x02'"
      ]
     },
     "execution_count": 1,
     "metadata": {},
     "output_type": "execute_result"
    }
   ],
   "source": [
    "import struct\n",
    "struct.pack('>i',2) # 高位字节"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 2,
   "metadata": {},
   "outputs": [
    {
     "name": "stdout",
     "output_type": "stream",
     "text": [
      "(2051, 60000, 28, 28)\n",
      "47040000\n"
     ]
    }
   ],
   "source": [
    "import struct\n",
    "with open('./train-images-idx3-ubyte', 'rb') as f:\n",
    "    buffer = f.read(4*4) # 4个int\n",
    "    head = struct.unpack('>iiii', buffer)\n",
    "    print(head)\n",
    "    length = head[1] * head[2] * head[3]\n",
    "    print(length)\n",
    "    buffer = f.read(length)\n",
    "    # print(buffer)\n",
    "    data = struct.unpack('>{}B'.format(length), buffer)"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 3,
   "metadata": {},
   "outputs": [
    {
     "data": {
      "text/plain": [
       "47040000"
      ]
     },
     "execution_count": 3,
     "metadata": {},
     "output_type": "execute_result"
    }
   ],
   "source": [
    "len(data)"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 4,
   "metadata": {},
   "outputs": [
    {
     "data": {
      "text/plain": [
       "tuple"
      ]
     },
     "execution_count": 4,
     "metadata": {},
     "output_type": "execute_result"
    }
   ],
   "source": [
    "type(data)"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 5,
   "metadata": {},
   "outputs": [],
   "source": [
    "import numpy as np\n",
    "imgs = np.reshape(data, (head[1], head[2], head[3]))"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 6,
   "metadata": {},
   "outputs": [
    {
     "data": {
      "text/plain": [
       "(60000, 28, 28)"
      ]
     },
     "execution_count": 6,
     "metadata": {},
     "output_type": "execute_result"
    }
   ],
   "source": [
    "imgs.shape"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 7,
   "metadata": {},
   "outputs": [
    {
     "data": {
      "image/png": "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\n",
      "text/plain": [
       "<Figure size 432x288 with 1 Axes>"
      ]
     },
     "metadata": {
      "needs_background": "light"
     },
     "output_type": "display_data"
    },
    {
     "data": {
      "image/png": "iVBORw0KGgoAAAANSUhEUgAAAPsAAAD4CAYAAAAq5pAIAAAABHNCSVQICAgIfAhkiAAAAAlwSFlzAAALEgAACxIB0t1+/AAAADh0RVh0U29mdHdhcmUAbWF0cGxvdGxpYiB2ZXJzaW9uMy4yLjEsIGh0dHA6Ly9tYXRwbG90bGliLm9yZy+j8jraAAAOEUlEQVR4nO3dcYwV5bnH8d8jLUalENSIG9Ha22Bym0YXQUJiU6lNG4sm0JhWiHFp2mRJLAk1jam2q5DUGxujNGoicaukWLlCFS3Y1EsNS/TemDSuSBVLW6mhdMuGFTWyxEQqPPePHZoVd95Zzpk5c+D5fpLNOWeenTOPx/0xc847c15zdwE49Z1WdwMAWoOwA0EQdiAIwg4EQdiBID7Vyo2ZGR/9AxVzdxtreVN7djO7xsz+Yma7zey2Zp4LQLWs0XF2M5sg6a+SviZpQNLLkha7+58S67BnBypWxZ59jqTd7v6Wux+WtF7SgiaeD0CFmgn7BZL+MerxQLbsY8ys28z6zay/iW0BaFIzH9CNdajwicN0d++V1CtxGA/UqZk9+4CkC0c9ni5pX3PtAKhKM2F/WdIMM/ucmU2UtEjS5nLaAlC2hg/j3f0jM1smaYukCZLWuPsbpXUGoFQND701tDHeswOVq+SkGgAnD8IOBEHYgSAIOxAEYQeCIOxAEIQdCIKwA0EQdiAIwg4EQdiBIAg7EARhB4Ig7EAQhB0IgrADQRB2IAjCDgRB2IEgCDsQBGEHgmjplM049cyaNStZX7ZsWW6tq6srue5jjz2WrD/44IPJ+vbt25P1aNizA0EQdiAIwg4EQdiBIAg7EARhB4Ig7EAQzOKKpM7OzmS9r68vWZ88eXKZ7XzM+++/n6yfc845lW27neXN4trUSTVmtkfSsKQjkj5y99nNPB+A6pRxBt1X3P1ACc8DoEK8ZweCaDbsLun3ZvaKmXWP9Qtm1m1m/WbW3+S2ADSh2cP4K919n5mdJ+l5M/uzu784+hfcvVdSr8QHdECdmtqzu/u+7HZI0jOS5pTRFIDyNRx2MzvLzD5z7L6kr0vaWVZjAMrVzGH8NEnPmNmx5/lvd/+fUrpCy8yZkz4Y27hxY7I+ZcqUZD11Hsfw8HBy3cOHDyfrRePoc+fOza0VXetetO2TUcNhd/e3JF1WYi8AKsTQGxAEYQeCIOxAEIQdCIKwA0Fwiesp4Mwzz8ytXX755cl1H3/88WR9+vTpyXo29Jor9fdVNPx1zz33JOvr169P1lO99fT0JNe9++67k/V2lneJK3t2IAjCDgRB2IEgCDsQBGEHgiDsQBCEHQiCKZtPAQ8//HBubfHixS3s5MQUnQMwadKkZP2FF15I1ufNm5dbu/TSS5PrnorYswNBEHYgCMIOBEHYgSAIOxAEYQeCIOxAEIyznwRmzZqVrF977bW5taLrzYsUjWU/++yzyfq9996bW9u3b19y3VdffTVZf++995L1q6++OrfW7OtyMmLPDgRB2IEgCDsQBGEHgiDsQBCEHQiCsANB8L3xbaCzszNZ7+vrS9YnT57c8Lafe+65ZL3oevirrroqWU9dN/7II48k13377beT9SJHjhzJrX3wwQfJdYv+u4q+875ODX9vvJmtMbMhM9s5atnZZva8mb2Z3U4ts1kA5RvPYfwvJV1z3LLbJG119xmStmaPAbSxwrC7+4uS3j1u8QJJa7P7ayUtLLkvACVr9Nz4ae4+KEnuPmhm5+X9opl1S+pucDsASlL5hTDu3iupV+IDOqBOjQ697TezDknKbofKawlAFRoN+2ZJS7L7SyRtKqcdAFUpHGc3syckzZN0rqT9klZI+o2kX0u6SNJeSd9y9+M/xBvruUIexl9yySXJ+ooVK5L1RYsWJesHDhzIrQ0ODibXveuuu5L1p556KllvZ6lx9qK/+w0bNiTrN954Y0M9tULeOHvhe3Z3zzur4qtNdQSgpThdFgiCsANBEHYgCMIOBEHYgSD4KukSnH766cl66uuUJWn+/PnJ+vDwcLLe1dWVW+vv70+ue8YZZyTrUV100UV1t1A69uxAEIQdCIKwA0EQdiAIwg4EQdiBIAg7EATj7CWYOXNmsl40jl5kwYIFyXrRtMqAxJ4dCIOwA0EQdiAIwg4EQdiBIAg7EARhB4JgnL0Eq1atStbNxvxm338rGidnHL0xp52Wvy87evRoCztpD+zZgSAIOxAEYQeCIOxAEIQdCIKwA0EQdiAIxtnH6brrrsutdXZ2Jtctmh548+bNDfWEtNRYetH/kx07dpTdTu0K9+xmtsbMhsxs56hlK83sn2a2I/tp7tsZAFRuPIfxv5R0zRjLf+7undnP78ptC0DZCsPu7i9KercFvQCoUDMf0C0zs9eyw/ypeb9kZt1m1m9m6UnHAFSq0bCvlvR5SZ2SBiXdl/eL7t7r7rPdfXaD2wJQgobC7u773f2Iux+V9AtJc8ptC0DZGgq7mXWMevhNSTvzfhdAeygcZzezJyTNk3SumQ1IWiFpnpl1SnJJeyQtrbDHtpCax3zixInJdYeGhpL1DRs2NNTTqa5o3vuVK1c2/Nx9fX3J+u23397wc7erwrC7++IxFj9aQS8AKsTpskAQhB0IgrADQRB2IAjCDgTBJa4t8OGHHybrg4ODLeqkvRQNrfX09CTrt956a7I+MDCQW7vvvtyTPiVJhw4dStZPRuzZgSAIOxAEYQeCIOxAEIQdCIKwA0EQdiAIxtlbIPJXRae+ZrtonPyGG25I1jdt2pSsX3/99cl6NOzZgSAIOxAEYQeCIOxAEIQdCIKwA0EQdiAIxtnHycwaqknSwoULk/Xly5c31FM7uOWWW5L1O+64I7c2ZcqU5Lrr1q1L1ru6upJ1fBx7diAIwg4EQdiBIAg7EARhB4Ig7EAQhB0IgnH2cXL3hmqSdP755yfrDzzwQLK+Zs2aZP2dd97Jrc2dOze57k033ZSsX3bZZcn69OnTk/W9e/fm1rZs2ZJc96GHHkrWcWIK9+xmdqGZbTOzXWb2hpktz5afbWbPm9mb2e3U6tsF0KjxHMZ/JOmH7v6fkuZK+r6ZfUHSbZK2uvsMSVuzxwDaVGHY3X3Q3bdn94cl7ZJ0gaQFktZmv7ZWUvqcUAC1OqH37GZ2saSZkv4gaZq7D0oj/yCY2Xk563RL6m6uTQDNGnfYzWySpI2SfuDuB4su/jjG3Xsl9WbPkf4kC0BlxjX0Zmaf1kjQ17n709ni/WbWkdU7JA1V0yKAMhTu2W1kF/6opF3uvmpUabOkJZJ+lt2mv9c3sAkTJiTrN998c7Je9JXIBw8ezK3NmDEjuW6zXnrppWR927ZtubU777yz7HaQMJ7D+Csl3STpdTPbkS37sUZC/msz+56kvZK+VU2LAMpQGHZ3/z9JeW/Qv1puOwCqwumyQBCEHQiCsANBEHYgCMIOBGFFl2eWurGT+Ay61KWcTz75ZHLdK664oqltF52t2Mz/w9TlsZK0fv36ZP1k/hrsU5W7j/kHw54dCIKwA0EQdiAIwg4EQdiBIAg7EARhB4JgnL0EHR0dyfrSpUuT9Z6enmS9mXH2+++/P7nu6tWrk/Xdu3cn62g/jLMDwRF2IAjCDgRB2IEgCDsQBGEHgiDsQBCMswOnGMbZgeAIOxAEYQeCIOxAEIQdCIKwA0EQdiCIwrCb2YVmts3MdpnZG2a2PFu+0sz+aWY7sp/51bcLoFGFJ9WYWYekDnffbmafkfSKpIWSvi3pkLvfO+6NcVINULm8k2rGMz/7oKTB7P6wme2SdEG57QGo2gm9ZzeziyXNlPSHbNEyM3vNzNaY2dScdbrNrN/M+pvqFEBTxn1uvJlNkvSCpP9y96fNbJqkA5Jc0k81cqj/3YLn4DAeqFjeYfy4wm5mn5b0W0lb3H3VGPWLJf3W3b9Y8DyEHahYwxfC2MhXmz4qadfooGcf3B3zTUk7m20SQHXG82n8lyT9r6TXJR3NFv9Y0mJJnRo5jN8jaWn2YV7qudizAxVr6jC+LIQdqB7XswPBEXYgCMIOBEHYgSAIOxAEYQeCIOxAEIQdCIKwA0EQdiAIwg4EQdiBIAg7EARhB4Io/MLJkh2Q9PdRj8/NlrWjdu2tXfuS6K1RZfb22bxCS69n/8TGzfrdfXZtDSS0a2/t2pdEb41qVW8cxgNBEHYgiLrD3lvz9lPatbd27Uuit0a1pLda37MDaJ269+wAWoSwA0HUEnYzu8bM/mJmu83stjp6yGNme8zs9Wwa6lrnp8vm0Bsys52jlp1tZs+b2ZvZ7Zhz7NXUW1tM452YZrzW167u6c9b/p7dzCZI+qukr0kakPSypMXu/qeWNpLDzPZImu3utZ+AYWZflnRI0mPHptYys3skvevuP8v+oZzq7j9qk95W6gSn8a6ot7xpxr+jGl+7Mqc/b0Qde/Y5kna7+1vufljSekkLauij7bn7i5LePW7xAklrs/trNfLH0nI5vbUFdx909+3Z/WFJx6YZr/W1S/TVEnWE/QJJ/xj1eEDtNd+7S/q9mb1iZt11NzOGacem2cpuz6u5n+MVTuPdSsdNM942r10j0583q46wjzU1TTuN/13p7pdL+oak72eHqxif1ZI+r5E5AAcl3VdnM9k04xsl/cDdD9bZy2hj9NWS162OsA9IunDU4+mS9tXQx5jcfV92OyTpGY287Wgn+4/NoJvdDtXcz7+5+353P+LuRyX9QjW+dtk04xslrXP3p7PFtb92Y/XVqtetjrC/LGmGmX3OzCZKWiRpcw19fIKZnZV9cCIzO0vS19V+U1FvlrQku79E0qYae/mYdpnGO2+acdX82tU+/bm7t/xH0nyNfCL/N0k/qaOHnL7+Q9Ifs5836u5N0hMaOaz7l0aOiL4n6RxJWyW9md2e3Ua9/UojU3u/ppFgddTU25c08tbwNUk7sp/5db92ib5a8rpxuiwQBGfQAUEQdiAIwg4EQdiBIAg7EARhB4Ig7EAQ/w8+sGPVrnT8WgAAAABJRU5ErkJggg==\n",
      "text/plain": [
       "<Figure size 432x288 with 1 Axes>"
      ]
     },
     "metadata": {
      "needs_background": "light"
     },
     "output_type": "display_data"
    },
    {
     "data": {
      "image/png": "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\n",
      "text/plain": [
       "<Figure size 432x288 with 1 Axes>"
      ]
     },
     "metadata": {
      "needs_background": "light"
     },
     "output_type": "display_data"
    },
    {
     "data": {
      "image/png": "iVBORw0KGgoAAAANSUhEUgAAAPsAAAD4CAYAAAAq5pAIAAAABHNCSVQICAgIfAhkiAAAAAlwSFlzAAALEgAACxIB0t1+/AAAADh0RVh0U29mdHdhcmUAbWF0cGxvdGxpYiB2ZXJzaW9uMy4yLjEsIGh0dHA6Ly9tYXRwbG90bGliLm9yZy+j8jraAAAMdUlEQVR4nO3dX6gc5R3G8eeJbRGiaDQYo02NFS9aio0lSMFQUkxDFCHxomIuSqTS40WVChUiVlAphVBri4gKp2j+lNZSiDahlKqEqC1B8SipxiapNkRNcjinIqK5SvX8enEmcoy7s8edmZ1Nft8PHHZ33t2ZH0OevO/M7M7riBCAU9+ctgsAMBiEHUiCsANJEHYgCcIOJPGFQW7MNqf+gYZFhDstr9Sz215le7/tN23fUWVdAJrlfq+z2z5N0r8lfU/SIUkvSVobEf8q+Qw9O9CwJnr2KyS9GREHIuKYpD9KWl1hfQAaVCXsF0p6Z8brQ8WyT7E9YnvM9liFbQGoqMoJuk5Dhc8M0yNiVNKoxDAeaFOVnv2QpEUzXn9Z0pFq5QBoSpWwvyTpUtsX2/6SpBskba+nLAB163sYHxEf2b5F0lOSTpP0WES8XltlAGrV96W3vjbGMTvQuEa+VAPg5EHYgSQIO5AEYQeSIOxAEoQdSIKwA0kQdiAJwg4kQdiBJAg7kARhB5Ig7EAShB1IgrADSRB2IAnCDiRB2IEkCDuQBGEHkiDsQBKEHUiCsANJEHYgCcIOJEHYgSQIO5AEYQeSIOxAEn1P2Qw07a677iptv/fee0vb58zp3pctX7689LPPPfdcafvJqFLYbR+U9KGkjyV9FBFL6ygKQP3q6Nm/GxHv1rAeAA3imB1IomrYQ9LTtl+2PdLpDbZHbI/ZHqu4LQAVVB3GXxkRR2yfJ+kZ2/si4vmZb4iIUUmjkmQ7Km4PQJ8q9ewRcaR4nJT0pKQr6igKQP36DrvtubbPPP5c0kpJe+oqDEC9qgzjF0h60vbx9fwhIv5WS1VI4cYbbyxtX79+fWn71NRU39uOyHdE2XfYI+KApG/WWAuABnHpDUiCsANJEHYgCcIOJEHYgST4iStac9FFF5W2n3766QOqJAd6diAJwg4kQdiBJAg7kARhB5Ig7EAShB1IguvsaNSKFSu6tt16662V1r1v377S9muvvbZr28TERKVtn4zo2YEkCDuQBGEHkiDsQBKEHUiCsANJEHYgCa6zo5Jly5aVtm/cuLFr21lnnVVp2/fdd19p+1tvvVVp/acaenYgCcIOJEHYgSQIO5AEYQeSIOxAEoQdSILr7Khk3bp1pe0XXHBB3+t+9tlnS9u3bNnS97oz6tmz237M9qTtPTOWnWP7GdtvFI/zmi0TQFWzGcZvkrTqhGV3SNoREZdK2lG8BjDEeoY9Ip6X9N4Ji1dL2lw83yxpTc11AahZv8fsCyJiXJIiYtz2ed3eaHtE0kif2wFQk8ZP0EXEqKRRSbIdTW8PQGf9XnqbsL1QkorHyfpKAtCEfsO+XdLxay7rJG2rpxwATXFE+cja9uOSlkuaL2lC0t2S/izpT5K+IultSd+PiBNP4nVaF8P4k8z8+fNL23vdf31qaqpr2/vvv1/62euvv760fefOnaXtWUWEOy3vecweEWu7NF1VqSIAA8XXZYEkCDuQBGEHkiDsQBKEHUiCn7gmt3jx4tL2rVu3NrbtBx98sLSdS2v1omcHkiDsQBKEHUiCsANJEHYgCcIOJEHYgSS4zp7cqlUn3kv00y677LJK69+xY0fXtgceeKDSuvH50LMDSRB2IAnCDiRB2IEkCDuQBGEHkiDsQBI9byVd68a4lfTArVlTPg3fpk2bStvnzp1b2r5r167S9rLbQfe6DTX60+1W0vTsQBKEHUiCsANJEHYgCcIOJEHYgSQIO5AEv2c/BZTd+73J+75L0oEDB0rbuZY+PHr27LYfsz1pe8+MZffYPmx7d/F3TbNlAqhqNsP4TZI63c7kNxGxpPj7a71lAahbz7BHxPOS3htALQAaVOUE3S22Xy2G+fO6vcn2iO0x22MVtgWgon7D/oikSyQtkTQu6f5ub4yI0YhYGhFL+9wWgBr0FfaImIiIjyNiStJvJV1Rb1kA6tZX2G0vnPHyOkl7ur0XwHDoeZ3d9uOSlkuab/uQpLslLbe9RFJIOijp5gZrRA/r16/v2jY1NdXotjds2NDo+lGfnmGPiLUdFj/aQC0AGsTXZYEkCDuQBGEHkiDsQBKEHUiCn7ieBJYsWVLavnLlysa2vW3bttL2/fv3N7Zt1IueHUiCsANJEHYgCcIOJEHYgSQIO5AEYQeSYMrmk8Dk5GRp+7x5Xe8K1tMLL7xQ2n711VeXth89erTvbaMZTNkMJEfYgSQIO5AEYQeSIOxAEoQdSIKwA0nwe/aTwLnnnlvaXuV20Q8//HBpO9fRTx307EAShB1IgrADSRB2IAnCDiRB2IEkCDuQBNfZh8DGjRtL2+fMae7/5F27djW2bgyXnv+KbC+yvdP2Xtuv2/5Jsfwc28/YfqN47P8OCgAaN5su4yNJP42Ir0n6tqQf2/66pDsk7YiISyXtKF4DGFI9wx4R4xHxSvH8Q0l7JV0oabWkzcXbNkta01SRAKr7XMfsthdLulzSi5IWRMS4NP0fgu3zunxmRNJItTIBVDXrsNs+Q9JWSbdFxAd2x3vafUZEjEoaLdbBDSeBlszqNK/tL2o66L+PiCeKxRO2FxbtCyWV3wIVQKt69uye7sIflbQ3In49o2m7pHWSNhSP5XP7JtZryuUVK1aUtvf6CeuxY8e6tj300EOln52YmChtx6ljNsP4KyX9QNJrtncXy+7UdMj/ZPsmSW9L+n4zJQKoQ8+wR8Q/JHU7QL+q3nIANIWvywJJEHYgCcIOJEHYgSQIO5AEP3EdgLPPPru0/fzzz6+0/sOHD3dtu/322yutG6cOenYgCcIOJEHYgSQIO5AEYQeSIOxAEoQdSIKwA0kQdiAJwg4kQdiBJAg7kARhB5Ig7EAShB1Igt+zD8C+fftK23tNm7xs2bI6y0FS9OxAEoQdSIKwA0kQdiAJwg4kQdiBJAg7kIQjovwN9iJJWySdL2lK0mhEPGD7Hkk/kvTf4q13RsRfe6yrfGMAKouIjrMuzybsCyUtjIhXbJ8p6WVJayRdL+loRPxqtkUQdqB53cI+m/nZxyWNF88/tL1X0oX1lgegaZ/rmN32YkmXS3qxWHSL7VdtP2Z7XpfPjNgesz1WqVIAlfQcxn/yRvsMSc9J+kVEPGF7gaR3JYWkn2t6qP/DHutgGA80rO9jdkmy/UVJf5H0VET8ukP7Ykl/iYhv9FgPYQca1i3sPYfxti3pUUl7Zwa9OHF33HWS9lQtEkBzZnM2fpmkv0t6TdOX3iTpTklrJS3R9DD+oKSbi5N5ZeuiZwcaVmkYXxfCDjSv72E8gFMDYQeSIOxAEoQdSIKwA0kQdiAJwg4kQdiBJAg7kARhB5Ig7EAShB1IgrADSRB2IIlBT9n8rqS3ZryeXywbRsNa27DWJVFbv+qs7aJuDQP9PftnNm6PRcTS1gooMay1DWtdErX1a1C1MYwHkiDsQBJth3205e2XGdbahrUuidr6NZDaWj1mBzA4bffsAAaEsANJtBJ226ts77f9pu072qihG9sHbb9me3fb89MVc+hN2t4zY9k5tp+x/Ubx2HGOvZZqu8f24WLf7bZ9TUu1LbK90/Ze26/b/kmxvNV9V1LXQPbbwI/ZbZ8m6d+SvifpkKSXJK2NiH8NtJAubB+UtDQiWv8Chu3vSDoqacvxqbVs/1LSexGxofiPcl5ErB+S2u7R55zGu6Hauk0zfqNa3Hd1Tn/ejzZ69iskvRkRByLimKQ/SlrdQh1DLyKel/TeCYtXS9pcPN+s6X8sA9eltqEQEeMR8Urx/ENJx6cZb3XfldQ1EG2E/UJJ78x4fUjDNd97SHra9su2R9oupoMFx6fZKh7Pa7meE/WcxnuQTphmfGj2XT/Tn1fVRtg7TU0zTNf/royIb0m6WtKPi+EqZucRSZdoeg7AcUn3t1lMMc34Vkm3RcQHbdYyU4e6BrLf2gj7IUmLZrz+sqQjLdTRUUQcKR4nJT2p6cOOYTJxfAbd4nGy5Xo+ERETEfFxRExJ+q1a3HfFNONbJf0+Ip4oFre+7zrVNaj91kbYX5J0qe2LbX9J0g2StrdQx2fYnlucOJHtuZJWavimot4uaV3xfJ2kbS3W8inDMo13t2nG1fK+a33684gY+J+kazR9Rv4/kn7WRg1d6vqqpH8Wf6+3XZukxzU9rPufpkdEN0k6V9IOSW8Uj+cMUW2/0/TU3q9qOlgLW6ptmaYPDV+VtLv4u6btfVdS10D2G1+XBZLgG3RAEoQdSIKwA0kQdiAJwg4kQdiBJAg7kMT/AR1U3JCzCjB2AAAAAElFTkSuQmCC\n",
      "text/plain": [
       "<Figure size 432x288 with 1 Axes>"
      ]
     },
     "metadata": {
      "needs_background": "light"
     },
     "output_type": "display_data"
    },
    {
     "data": {
      "image/png": "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\n",
      "text/plain": [
       "<Figure size 432x288 with 1 Axes>"
      ]
     },
     "metadata": {
      "needs_background": "light"
     },
     "output_type": "display_data"
    }
   ],
   "source": [
    "import matplotlib.pyplot as plt\n",
    "\n",
    "for i in range(5):\n",
    "    plt.imshow(imgs[i], cmap='gray')\n",
    "    plt.show()"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 8,
   "metadata": {},
   "outputs": [
    {
     "name": "stderr",
     "output_type": "stream",
     "text": [
      "c:\\users\\katie\\appdata\\local\\programs\\python\\python37\\lib\\site-packages\\sklearn\\feature_extraction\\text.py:17: DeprecationWarning: Using or importing the ABCs from 'collections' instead of from 'collections.abc' is deprecated since Python 3.3,and in 3.9 it will stop working\n",
      "  from collections import Mapping, defaultdict\n"
     ]
    }
   ],
   "source": [
    "from sklearn.datasets import fetch_mldata\n",
    "mnist = fetch_mldata('MNIST original', data_home='./')"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 9,
   "metadata": {},
   "outputs": [
    {
     "data": {
      "text/plain": [
       "{'DESCR': 'mldata.org dataset: mnist-original',\n",
       " 'COL_NAMES': ['label', 'data'],\n",
       " 'target': array([0., 0., 0., ..., 9., 9., 9.]),\n",
       " 'data': array([[0, 0, 0, ..., 0, 0, 0],\n",
       "        [0, 0, 0, ..., 0, 0, 0],\n",
       "        [0, 0, 0, ..., 0, 0, 0],\n",
       "        ...,\n",
       "        [0, 0, 0, ..., 0, 0, 0],\n",
       "        [0, 0, 0, ..., 0, 0, 0],\n",
       "        [0, 0, 0, ..., 0, 0, 0]], dtype=uint8)}"
      ]
     },
     "execution_count": 9,
     "metadata": {},
     "output_type": "execute_result"
    }
   ],
   "source": [
    "mnist"
   ]
  },
  {
   "cell_type": "markdown",
   "metadata": {},
   "source": [
    "   * DESCR 数据集描述\n",
    "   * data 包含一个数组，每个实例为一行，每个特征为一列\n",
    "   * target 包含一个带有标签的数组"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 10,
   "metadata": {},
   "outputs": [],
   "source": [
    "X, y = mnist['data'], mnist['target']"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 11,
   "metadata": {},
   "outputs": [
    {
     "data": {
      "text/plain": [
       "(70000, 784)"
      ]
     },
     "execution_count": 11,
     "metadata": {},
     "output_type": "execute_result"
    }
   ],
   "source": [
    "X.shape"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 12,
   "metadata": {},
   "outputs": [
    {
     "data": {
      "text/plain": [
       "(70000,)"
      ]
     },
     "execution_count": 12,
     "metadata": {},
     "output_type": "execute_result"
    }
   ],
   "source": [
    "y.shape"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 13,
   "metadata": {},
   "outputs": [],
   "source": [
    "%matplotlib inline\n",
    "import matplotlib"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 14,
   "metadata": {},
   "outputs": [],
   "source": [
    "some_digit = X[36000]\n",
    "some_digit_image = some_digit.reshape(28,28)"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 15,
   "metadata": {},
   "outputs": [
    {
     "data": {
      "image/png": "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\n",
      "text/plain": [
       "<Figure size 432x288 with 1 Axes>"
      ]
     },
     "metadata": {
      "needs_background": "light"
     },
     "output_type": "display_data"
    }
   ],
   "source": [
    "plt.imshow(some_digit_image, cmap = matplotlib.cm.binary)\n",
    "plt.show()"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 16,
   "metadata": {},
   "outputs": [
    {
     "data": {
      "text/plain": [
       "5.0"
      ]
     },
     "execution_count": 16,
     "metadata": {},
     "output_type": "execute_result"
    }
   ],
   "source": [
    "y[36000]"
   ]
  },
  {
   "cell_type": "markdown",
   "metadata": {},
   "source": [
    "## 建立测试集合训练集"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 17,
   "metadata": {},
   "outputs": [],
   "source": [
    "X_train, X_test, y_train, y_test = X[:60000], X[60000:], y[:60000], y[60000:]"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 18,
   "metadata": {},
   "outputs": [
    {
     "data": {
      "text/plain": [
       "array([27839, 21544, 35887, ..., 16549, 26194, 16758])"
      ]
     },
     "execution_count": 18,
     "metadata": {},
     "output_type": "execute_result"
    }
   ],
   "source": [
    "# 将数据集合交叉洗牌，交叉验证时，每个子集合数据分布均匀，有些机器学习算法对训练实例的顺序敏感\n",
    "shuffle_index = np.random.permutation(60000)\n",
    "shuffle_index"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 19,
   "metadata": {},
   "outputs": [],
   "source": [
    "X_train, y_train = X_train[shuffle_index], y_train[shuffle_index]"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 20,
   "metadata": {},
   "outputs": [
    {
     "data": {
      "text/plain": [
       "array([[0, 0, 0, ..., 0, 0, 0],\n",
       "       [0, 0, 0, ..., 0, 0, 0],\n",
       "       [0, 0, 0, ..., 0, 0, 0],\n",
       "       ...,\n",
       "       [0, 0, 0, ..., 0, 0, 0],\n",
       "       [0, 0, 0, ..., 0, 0, 0],\n",
       "       [0, 0, 0, ..., 0, 0, 0]], dtype=uint8)"
      ]
     },
     "execution_count": 20,
     "metadata": {},
     "output_type": "execute_result"
    }
   ],
   "source": [
    "X_train"
   ]
  },
  {
   "cell_type": "markdown",
   "metadata": {},
   "source": [
    "# 训练一个二元分类器"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 21,
   "metadata": {},
   "outputs": [
    {
     "data": {
      "text/plain": [
       "array([False, False,  True, ..., False, False, False])"
      ]
     },
     "execution_count": 21,
     "metadata": {},
     "output_type": "execute_result"
    }
   ],
   "source": [
    "# 识别数字5，二元分类 是5或者非5\n",
    "y_train_5 = (y_train == 5)\n",
    "y_train_5"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 22,
   "metadata": {},
   "outputs": [
    {
     "data": {
      "text/plain": [
       "array([[False, False,  True, ..., False, False, False],\n",
       "       [False, False, False, ...,  True, False, False],\n",
       "       [False, False, False, ..., False, False, False],\n",
       "       ...,\n",
       "       [False, False, False, ..., False, False, False],\n",
       "       [False, False, False, ..., False, False, False],\n",
       "       [False, False,  True, ..., False, False, False]])"
      ]
     },
     "execution_count": 22,
     "metadata": {},
     "output_type": "execute_result"
    }
   ],
   "source": [
    "y_train_5.reshape(20,-1)"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 23,
   "metadata": {},
   "outputs": [],
   "source": [
    "y_test_5 = (y_test == 5)"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 24,
   "metadata": {},
   "outputs": [
    {
     "name": "stderr",
     "output_type": "stream",
     "text": [
      "c:\\users\\katie\\appdata\\local\\programs\\python\\python37\\lib\\site-packages\\sklearn\\linear_model\\stochastic_gradient.py:128: FutureWarning: max_iter and tol parameters have been added in <class 'sklearn.linear_model.stochastic_gradient.SGDClassifier'> in 0.19. If both are left unset, they default to max_iter=5 and tol=None. If tol is not None, max_iter defaults to max_iter=1000. From 0.21, default max_iter will be 1000, and default tol will be 1e-3.\n",
      "  \"and default tol will be 1e-3.\" % type(self), FutureWarning)\n"
     ]
    },
    {
     "data": {
      "text/plain": [
       "array([ True])"
      ]
     },
     "execution_count": 24,
     "metadata": {},
     "output_type": "execute_result"
    }
   ],
   "source": [
    "# SGD 梯度下降 分类器，适合非常的的数据集，独立处理训练集数据，一次一个，适合在线学习，\n",
    "from sklearn.linear_model import SGDClassifier\n",
    "\n",
    "sgd_clf = SGDClassifier(random_state=42)\n",
    "sgd_clf.fit(X_train, y_train_5)\n",
    "\n",
    "sgd_clf.predict([some_digit])"
   ]
  },
  {
   "cell_type": "markdown",
   "metadata": {},
   "source": [
    "# 性能考核"
   ]
  },
  {
   "cell_type": "markdown",
   "metadata": {},
   "source": [
    "## 使用交叉验证测量精度"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 25,
   "metadata": {},
   "outputs": [
    {
     "name": "stderr",
     "output_type": "stream",
     "text": [
      "c:\\users\\katie\\appdata\\local\\programs\\python\\python37\\lib\\site-packages\\sklearn\\linear_model\\stochastic_gradient.py:128: FutureWarning: max_iter and tol parameters have been added in <class 'sklearn.linear_model.stochastic_gradient.SGDClassifier'> in 0.19. If both are left unset, they default to max_iter=5 and tol=None. If tol is not None, max_iter defaults to max_iter=1000. From 0.21, default max_iter will be 1000, and default tol will be 1e-3.\n",
      "  \"and default tol will be 1e-3.\" % type(self), FutureWarning)\n",
      "c:\\users\\katie\\appdata\\local\\programs\\python\\python37\\lib\\site-packages\\sklearn\\linear_model\\stochastic_gradient.py:128: FutureWarning: max_iter and tol parameters have been added in <class 'sklearn.linear_model.stochastic_gradient.SGDClassifier'> in 0.19. If both are left unset, they default to max_iter=5 and tol=None. If tol is not None, max_iter defaults to max_iter=1000. From 0.21, default max_iter will be 1000, and default tol will be 1e-3.\n",
      "  \"and default tol will be 1e-3.\" % type(self), FutureWarning)\n",
      "c:\\users\\katie\\appdata\\local\\programs\\python\\python37\\lib\\site-packages\\sklearn\\linear_model\\stochastic_gradient.py:128: FutureWarning: max_iter and tol parameters have been added in <class 'sklearn.linear_model.stochastic_gradient.SGDClassifier'> in 0.19. If both are left unset, they default to max_iter=5 and tol=None. If tol is not None, max_iter defaults to max_iter=1000. From 0.21, default max_iter will be 1000, and default tol will be 1e-3.\n",
      "  \"and default tol will be 1e-3.\" % type(self), FutureWarning)\n"
     ]
    },
    {
     "data": {
      "text/plain": [
       "array([0.9548 , 0.93335, 0.94725])"
      ]
     },
     "execution_count": 25,
     "metadata": {},
     "output_type": "execute_result"
    }
   ],
   "source": [
    "# 评估分类器比评估回归器困难得多\n",
    "\n",
    "# 3个折叠，正确率达到 95% 以上\n",
    "from sklearn.model_selection import cross_val_score\n",
    "cross_val_score(sgd_clf, X_train, y_train_5, cv=3, scoring=\"accuracy\")"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 26,
   "metadata": {},
   "outputs": [],
   "source": [
    "# 把每张图都分类成 非5\n",
    "from sklearn.base import BaseEstimator\n",
    "class Never5Classifier(BaseEstimator):\n",
    "    def fit(self, X, y=None):\n",
    "        pass\n",
    "    def predict(slef, X):\n",
    "        return np.zeros((len(X), 1), dtype=bool)"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 27,
   "metadata": {},
   "outputs": [
    {
     "data": {
      "text/plain": [
       "array([[False],\n",
       "       [False],\n",
       "       [False],\n",
       "       ...,\n",
       "       [False],\n",
       "       [False],\n",
       "       [False]])"
      ]
     },
     "execution_count": 27,
     "metadata": {},
     "output_type": "execute_result"
    }
   ],
   "source": [
    "np.zeros((len(X), 1), dtype=bool)"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 28,
   "metadata": {},
   "outputs": [
    {
     "data": {
      "text/plain": [
       "array([0.9107 , 0.90885, 0.9094 ])"
      ]
     },
     "execution_count": 28,
     "metadata": {},
     "output_type": "execute_result"
    }
   ],
   "source": [
    "never_5_clf = Never5Classifier()\n",
    "cross_val_score(never_5_clf, X_train, y_train_5, cv=3, scoring=\"accuracy\")"
   ]
  },
  {
   "cell_type": "markdown",
   "metadata": {},
   "source": [
    "   * 准确率超过90%，因为5的图像大约只有10%， 你猜一张图不是5，90%的时间你都是正确的\n",
    "   * 这说明准确率（精度）无法成为费雷器的首要性能指标，特别是当你处理偏科数据集，某些类比其他类更为频繁"
   ]
  },
  {
   "cell_type": "markdown",
   "metadata": {},
   "source": [
    "## 混淆矩阵"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 29,
   "metadata": {},
   "outputs": [
    {
     "name": "stderr",
     "output_type": "stream",
     "text": [
      "c:\\users\\katie\\appdata\\local\\programs\\python\\python37\\lib\\site-packages\\sklearn\\linear_model\\stochastic_gradient.py:128: FutureWarning: max_iter and tol parameters have been added in <class 'sklearn.linear_model.stochastic_gradient.SGDClassifier'> in 0.19. If both are left unset, they default to max_iter=5 and tol=None. If tol is not None, max_iter defaults to max_iter=1000. From 0.21, default max_iter will be 1000, and default tol will be 1e-3.\n",
      "  \"and default tol will be 1e-3.\" % type(self), FutureWarning)\n",
      "c:\\users\\katie\\appdata\\local\\programs\\python\\python37\\lib\\site-packages\\sklearn\\linear_model\\stochastic_gradient.py:128: FutureWarning: max_iter and tol parameters have been added in <class 'sklearn.linear_model.stochastic_gradient.SGDClassifier'> in 0.19. If both are left unset, they default to max_iter=5 and tol=None. If tol is not None, max_iter defaults to max_iter=1000. From 0.21, default max_iter will be 1000, and default tol will be 1e-3.\n",
      "  \"and default tol will be 1e-3.\" % type(self), FutureWarning)\n",
      "c:\\users\\katie\\appdata\\local\\programs\\python\\python37\\lib\\site-packages\\sklearn\\linear_model\\stochastic_gradient.py:128: FutureWarning: max_iter and tol parameters have been added in <class 'sklearn.linear_model.stochastic_gradient.SGDClassifier'> in 0.19. If both are left unset, they default to max_iter=5 and tol=None. If tol is not None, max_iter defaults to max_iter=1000. From 0.21, default max_iter will be 1000, and default tol will be 1e-3.\n",
      "  \"and default tol will be 1e-3.\" % type(self), FutureWarning)\n"
     ]
    }
   ],
   "source": [
    "# 评估分类器性能的更好方法是混淆矩阵\n",
    "# A类别实例被分为B类别次数\n",
    "# 想要知道分类器将数字3和数字5混淆多少次，通过混淆矩阵的5行3列\n",
    "\n",
    "from sklearn.model_selection import cross_val_predict # cross_val_predict得到的不是精度分数，而是预测结果\n",
    "\n",
    "y_train_pred = cross_val_predict(sgd_clf, X_train, y_train_5, cv=3)"
   ]
  },
  {
   "cell_type": "markdown",
   "metadata": {},
   "source": [
    "## 与cross_val_score相比\n",
    "   * 同样执行交叉验证\n",
    "   * 返回的不是评估分数，而是每个折叠的预测\n",
    "   * 每一个实例在模型预测时使用的数据，在训练期间未见过"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 30,
   "metadata": {},
   "outputs": [
    {
     "data": {
      "text/plain": [
       "array([[54260,   319],\n",
       "       [ 2973,  2448]], dtype=int64)"
      ]
     },
     "execution_count": 30,
     "metadata": {},
     "output_type": "execute_result"
    }
   ],
   "source": [
    "from sklearn.metrics import confusion_matrix\n",
    "\n",
    "confusion_matrix(y_train_5, y_train_pred)"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 31,
   "metadata": {},
   "outputs": [],
   "source": [
    "# 行表示实际类别，列表示预测类别\n",
    "# 第一行 第一列 53711 被正确的分为 非5， 真负类\n",
    "# 第一行 第二列 808 被错误的分类成 5，假正类\n",
    "# 第二行 第一列 1274 被错误的分类为 非5，假负类\n",
    "# 第二行 第二列 4147 被正确的分类成 5， 真正类\n",
    "# 这种衡量方式太复杂，我们可以用更简单的指标"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 32,
   "metadata": {},
   "outputs": [
    {
     "data": {
      "text/plain": [
       "array([[54579,     0],\n",
       "       [    0,  5421]], dtype=int64)"
      ]
     },
     "execution_count": 32,
     "metadata": {},
     "output_type": "execute_result"
    }
   ],
   "source": [
    "y_train_perfect_predictions = y_train_5\n",
    "confusion_matrix(y_train_5, y_train_perfect_predictions)"
   ]
  },
  {
   "cell_type": "markdown",
   "metadata": {},
   "source": [
    "## 正类预测的准确率 被称为分类器的精度"
   ]
  },
  {
   "cell_type": "markdown",
   "metadata": {},
   "source": [
    "### 精度 = (TP)/(TP+FP)\n",
    "### TP是真正类的数量，FP是假正类的数量\n",
    "### 召回率TPR = (TP)/(TP+FN) （检测正类实例的比例）\n",
    "### FN是假负类的数量"
   ]
  },
  {
   "cell_type": "markdown",
   "metadata": {},
   "source": [
    "## 精度和召回率"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 33,
   "metadata": {},
   "outputs": [
    {
     "data": {
      "text/plain": [
       "0.8847126852186483"
      ]
     },
     "execution_count": 33,
     "metadata": {},
     "output_type": "execute_result"
    }
   ],
   "source": [
    "from sklearn.metrics import precision_score, recall_score\n",
    "\n",
    "precision_score(y_train_5, y_train_pred) # 4147 / (4147 + 808)"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 34,
   "metadata": {},
   "outputs": [
    {
     "data": {
      "text/plain": [
       "0.45157719977863864"
      ]
     },
     "execution_count": 34,
     "metadata": {},
     "output_type": "execute_result"
    }
   ],
   "source": [
    "recall_score(y_train_5, y_train_pred) # 4147 / (4147 + 1274)"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 35,
   "metadata": {},
   "outputs": [],
   "source": [
    "# 说明 检测一张图的时候，只有83%的概率是准确的（精度）；而且只有76%的数字5，被它检测出来（召回率）\n",
    "# 精度和召回率合成大姨指标，成为 F1 分数，谐波平均值\n",
    "# 平均值平等对待所有的值，谐波平均值会给予较低值更高的权重，只有召回率和精度都很高时，才能获得较高的F1分数"
   ]
  },
  {
   "cell_type": "markdown",
   "metadata": {},
   "source": [
    "$\n",
    "F_1 = \\cfrac{2}{\\cfrac{1}{\\text{precision}} + \\cfrac{1}{\\text{recall}}} = 2 \\times \\cfrac{\\text{precision}\\, \\times \\, \\text{recall}}{\\text{precision}\\, + \\, \\text{recall}} = \\cfrac{TP}{TP + \\cfrac{FN + FP}{2}}\n",
    "$"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 36,
   "metadata": {},
   "outputs": [
    {
     "data": {
      "text/plain": [
       "0.5979482169027847"
      ]
     },
     "execution_count": 36,
     "metadata": {},
     "output_type": "execute_result"
    }
   ],
   "source": [
    "from sklearn.metrics import f1_score\n",
    "f1_score(y_train_5, y_train_pred)"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 37,
   "metadata": {},
   "outputs": [],
   "source": [
    "# F1分数对那些具有相近精度和召回率 分类器更有利，这不一定符合你的期望\n",
    "# 有时候你更关心精度，有时你更关心召回率\n",
    "# 训练一个分类器检测儿童可以放心观看的视频，你可能要求尽量少的拦截了好的视频，低召回率，保留下来的都是安全的视频，高精度\n",
    "# 不能同时增加精度并减少召回率，反之亦然"
   ]
  },
  {
   "cell_type": "markdown",
   "metadata": {},
   "source": [
    "## 精度/召回率权衡"
   ]
  },
  {
   "cell_type": "markdown",
   "metadata": {},
   "source": [
    "   * SGDClassifier对每个实例基于决策函数计算一个分值，大于为阀值正类，否则为负类\n",
    "   * 中间阀值右侧找到4个真正类 真5，一个假正类 6，精度为4/5、80%\n",
    "   * 在所有的6个 真正的5中，分类器找到了4个，召回率为4/6、67%\n",
    "   * 提高阀值，向右移动，精度提高，召回率降低\n",
    "   * 反之阀值降低，召回提高，精度降低\n",
    "   * SKlearn不可以直接设置阀值，可以访问决策分数\n",
    "   * SGDClassifier默认阀值为0"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 38,
   "metadata": {},
   "outputs": [],
   "source": [
    "# 如何设置阀值\n",
    "\n",
    "# 用predict_proba得到每个实例属于正类的概率，然后对概率切一下，以LogisticRegression为例\n",
    "# clf = LogisticRegression()\n",
    "# clf = fit(X_train, y_train)\n",
    "# pred_proba = clf.predict_proba(X_test)[:, 1]\n",
    "# threshold = 0.75 # 阀值设置为0.75\n",
    "# pred_label = pred_proba > threshold\n",
    "\n",
    "# pred_proba是每个实例为真的概率\n",
    "# 假设阀值是0.75\n",
    "# pred_label里True就是概率大于0.75的"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 39,
   "metadata": {},
   "outputs": [
    {
     "data": {
      "text/plain": [
       "array([186565.89427828])"
      ]
     },
     "execution_count": 39,
     "metadata": {},
     "output_type": "execute_result"
    }
   ],
   "source": [
    "# 返回决策值decision_function\n",
    "y_scores = sgd_clf.decision_function([some_digit])\n",
    "y_scores"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 40,
   "metadata": {},
   "outputs": [],
   "source": [
    "threshold = 0\n",
    "y_some_digit_pred = (y_scores > threshold)"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 41,
   "metadata": {},
   "outputs": [
    {
     "data": {
      "text/plain": [
       "array([ True])"
      ]
     },
     "execution_count": 41,
     "metadata": {},
     "output_type": "execute_result"
    }
   ],
   "source": [
    "y_some_digit_pred"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 42,
   "metadata": {},
   "outputs": [
    {
     "data": {
      "text/plain": [
       "array([False])"
      ]
     },
     "execution_count": 42,
     "metadata": {},
     "output_type": "execute_result"
    }
   ],
   "source": [
    "# 提高阀值可以降低召回率，提高阀值到200000，就错了这个图\n",
    "threshold = 200000\n",
    "y_some_digit_pred = (y_scores > threshold)\n",
    "y_some_digit_pred"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 43,
   "metadata": {},
   "outputs": [
    {
     "name": "stderr",
     "output_type": "stream",
     "text": [
      "c:\\users\\katie\\appdata\\local\\programs\\python\\python37\\lib\\site-packages\\sklearn\\linear_model\\stochastic_gradient.py:128: FutureWarning: max_iter and tol parameters have been added in <class 'sklearn.linear_model.stochastic_gradient.SGDClassifier'> in 0.19. If both are left unset, they default to max_iter=5 and tol=None. If tol is not None, max_iter defaults to max_iter=1000. From 0.21, default max_iter will be 1000, and default tol will be 1e-3.\n",
      "  \"and default tol will be 1e-3.\" % type(self), FutureWarning)\n",
      "c:\\users\\katie\\appdata\\local\\programs\\python\\python37\\lib\\site-packages\\sklearn\\linear_model\\stochastic_gradient.py:128: FutureWarning: max_iter and tol parameters have been added in <class 'sklearn.linear_model.stochastic_gradient.SGDClassifier'> in 0.19. If both are left unset, they default to max_iter=5 and tol=None. If tol is not None, max_iter defaults to max_iter=1000. From 0.21, default max_iter will be 1000, and default tol will be 1e-3.\n",
      "  \"and default tol will be 1e-3.\" % type(self), FutureWarning)\n",
      "c:\\users\\katie\\appdata\\local\\programs\\python\\python37\\lib\\site-packages\\sklearn\\linear_model\\stochastic_gradient.py:128: FutureWarning: max_iter and tol parameters have been added in <class 'sklearn.linear_model.stochastic_gradient.SGDClassifier'> in 0.19. If both are left unset, they default to max_iter=5 and tol=None. If tol is not None, max_iter defaults to max_iter=1000. From 0.21, default max_iter will be 1000, and default tol will be 1e-3.\n",
      "  \"and default tol will be 1e-3.\" % type(self), FutureWarning)\n"
     ]
    }
   ],
   "source": [
    "# 如何决定使用什么阀值\n",
    "# 返回决策分数，而不是预测结果\n",
    "y_scores = cross_val_predict(sgd_clf, X_train, y_train_5, cv=3,\n",
    "                            method='decision_function')"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 44,
   "metadata": {},
   "outputs": [
    {
     "data": {
      "text/plain": [
       "(60000,)"
      ]
     },
     "execution_count": 44,
     "metadata": {},
     "output_type": "execute_result"
    }
   ],
   "source": [
    "# 有了y_scores, 可以计算所有可能的阀值的精度和召回率\n",
    "y_scores.shape"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 45,
   "metadata": {},
   "outputs": [],
   "source": [
    "from sklearn.metrics import precision_recall_curve\n",
    "\n",
    "precisions, recalls, thresholds = precision_recall_curve(y_train_5, y_scores)"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 46,
   "metadata": {},
   "outputs": [
    {
     "data": {
      "image/png": "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\n",
      "text/plain": [
       "<Figure size 576x288 with 1 Axes>"
      ]
     },
     "metadata": {
      "needs_background": "light"
     },
     "output_type": "display_data"
    }
   ],
   "source": [
    "# 使用matplotlib 绘制精度和召回相对于阀值的函数图\n",
    "def plot_precision_recall_vs_threshold(precisions, recalls, thresholds):\n",
    "    plt.plot(thresholds, precisions[:-1], \"b--\", label=\"Precision\", linewidth=2)\n",
    "    plt.plot(thresholds, recalls[:-1], \"g-\", label=\"Recall\", linewidth=2)\n",
    "    plt.xlabel(\"Threshold\", fontsize=16)\n",
    "    plt.legend(loc=\"upper left\", fontsize=16)\n",
    "    plt.ylim([0,1])\n",
    "\n",
    "plt.figure(figsize=(8,4))\n",
    "plot_precision_recall_vs_threshold(precisions, recalls, thresholds)\n",
    "plt.xlim([-700000,700000])\n",
    "plt.show()"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 47,
   "metadata": {},
   "outputs": [
    {
     "data": {
      "image/png": "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\n",
      "text/plain": [
       "<Figure size 576x432 with 1 Axes>"
      ]
     },
     "metadata": {
      "needs_background": "light"
     },
     "output_type": "display_data"
    }
   ],
   "source": [
    "plt.rcParams['font.sans-serif'] = ['SimHei']\n",
    "def plot_precision_vs_recall(precisions, recalls):\n",
    "    plt.plot(recalls, precisions, \"b-\", linewidth=2)\n",
    "    plt.xlabel(\"召回\", fontsize=16)\n",
    "    plt.ylabel(\"精度\", fontsize=16)\n",
    "    plt.axis([0, 1, 0, 1])\n",
    "\n",
    "plt.figure(figsize=(8, 6))\n",
    "plot_precision_vs_recall(precisions, recalls)\n",
    "plt.show()"
   ]
  },
  {
   "cell_type": "markdown",
   "metadata": {},
   "source": [
    "## 通过选择阀值来实现最佳的精度/召回率权衡"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 48,
   "metadata": {},
   "outputs": [],
   "source": [
    "# 目标设定为90%的精度，阀值大概在100000左右，设置了阀值为100000\n",
    "y_train_pred_90 = (y_scores > 100000)"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 49,
   "metadata": {},
   "outputs": [
    {
     "data": {
      "text/plain": [
       "0.9275990099009901"
      ]
     },
     "execution_count": 49,
     "metadata": {},
     "output_type": "execute_result"
    }
   ],
   "source": [
    "precision_score(y_train_5, y_train_pred_90)"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 50,
   "metadata": {},
   "outputs": [
    {
     "data": {
      "text/plain": [
       "0.2765172477402693"
      ]
     },
     "execution_count": 50,
     "metadata": {},
     "output_type": "execute_result"
    }
   ],
   "source": [
    "recall_score(y_train_5, y_train_pred_90)"
   ]
  },
  {
   "cell_type": "markdown",
   "metadata": {},
   "source": [
    "## 总结\n",
    "   * 获得了一个90%精度的分类器，但如果召回太低，精度再高，也不怎么有用\n",
    "   * 如果工作中，需要99%的精度你应该回应，召回率是多少？"
   ]
  },
  {
   "cell_type": "markdown",
   "metadata": {},
   "source": [
    "## ROC曲线"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 51,
   "metadata": {},
   "outputs": [],
   "source": [
    "# 本质是 真正类率tpr和假正类率fpr （错误的分为正类的负类实例比例）\n",
    "# 与召回/精度曲线非常相似"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 52,
   "metadata": {},
   "outputs": [],
   "source": [
    "from sklearn.metrics import roc_curve\n",
    "\n",
    "fpr, tpr, thresholds = roc_curve(y_train_5, y_scores)"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 53,
   "metadata": {},
   "outputs": [
    {
     "data": {
      "image/png": "iVBORw0KGgoAAAANSUhEUgAAAf0AAAF6CAYAAAATeYHoAAAABHNCSVQICAgIfAhkiAAAAAlwSFlzAAALEgAACxIB0t1+/AAAADh0RVh0U29mdHdhcmUAbWF0cGxvdGxpYiB2ZXJzaW9uMy4yLjEsIGh0dHA6Ly9tYXRwbG90bGliLm9yZy+j8jraAAAgAElEQVR4nOzdd3xUVf7/8deZSS+QAAldBUXpgRBBBAFBQNQtNooUQVHU1V3L2kFZRNf2Zf3acFVQ0BXE/dm+FkREsYBUDaKIiPRe09vMnN8fM0FEIAGSuZmZ9/Px4MHkzs29n7Br3nPOPcVYaxEREZHw53K6ABEREQkOhb6IiEiEUOiLiIhECIW+iIhIhFDoi4iIRAiFvoiISIRQ6IuIiESIoIe+Maa+MeaLCs6ZYoxZaIwZG6y6REREwl1QQ98YkwpMAxKPcs4lgNta2xVoboxpEaz6REREwlmwW/peYBCQe5RzegGzAq/nAN2ruSYREZGIEBXMm1lrcwGMMUc7LRHYEni9F8g89ARjzLXAtQCJiYmdWrZsWbWFiojIAT5r8fosZV5Lmdd34Lh/FXeLBUrKfPisxWfBGCgq9RLtPrRd6T/3oC9/52gLw1sLBaUe4qLdYH97tRKPD5cxmEOuYa096jWrW5TLYIyhzOsjNsrlr9GAx2uJchuiXC4OjsTyl15rcRlz4N/QW1bK3h2bKSsuIqFWKoW5+3Zba9OOuZ6q+KGqWD4QH3idxGF6I6y1zwPPA2RlZdmlS5cGrzoRkSpgrcXjs5R6fOwtKAU4EJr2oL89PsveglLcLoM96D3/uRZrYWtOEXFRbrw+i9da1u7Mp3Z8NPaga3LQ923PLWbRL3tpnpZImdfHt5v2k5Yci9sYvNbi88GW/UXH9PMcGiaxVfKv9Hu1TvD7k+OicBmD22VwGQDD7vwSzqifjDEEjgfeM4b1uwvo3KwO0W7Dhj2FdGiaQrTbRZTLkBgbRXqtWNo1rk1ibBTuwHUTYtykJMTgdh21gVtpBQUFNG/enPiYaF55+SUGDRqEMWbD8VyrJob+Mvxd+l8DGcBqZ8sRkUhgAwHqOygc9xWWUlDiIaeoDJ/1t86Ky7zsyi+hxOPD6/XhtbB6ey6b9xWRnhyLt/waPn8or9tdgMGQGOvG47Os2JyD22Xw+pzf7OzgYN+0t+KQj3G7aJIaT16Jh86n1MEVCM7yDwvFZV7Sk+NolBJPSkI0+cUemtZJONCS9eeoOdCaNYaD3jMHmrnl5/36OvA+/tZ9bJSbpNioA8FtAmEbG+UiMSYK4+JAcJe3rN3GEPW7noearaysjOjoaBITE3nqqac488wzadas2Qld09HQN8a0Bq6w1h48Sv9t4AtjTCNgAHCWI8WJSI1hrb9rubyb2eOzbNpbyMotOWzLKcYXaBH/sDWXuokxeK1l6fp9NK0Tj9dnyd6UQ92kmANhuy2nGPB3vR5oCQfRwYEfF+2iuMxH/VqxxEa5MQcFVXlw7c4vJSHGTeOUeP8xV/k5gdAD1u8ppNPJqUS5/AG4aV8RGU1qHwjZAyHo8l+7pMxHrfhoWjVIJsrtwu2C1EDrtLwlHO12kZoQHXJhGQ6+++47Bg8ezPjx47n88ssZOHBglVzXkdC31vYK/P0DMPaQ93KNMb2AvsCj1tqcoBcoIifM4/WRU1RGYakXj8/fat62v5jiMi9rd+UTH+1me24x+wvL2FtQSonHS2JsFB6v5cftucRFu4mLdlPq8R1zV3O5g7+vPOh/U+MhaX8gcPH/Xer1h/GO3BIymtQmLtqN22WIj3aTlhxLTOAZrdtl2F9YRrN6CTStkxAIWIPb5W+Flnh8NKgVR0yUv1s4PsZNvaRYasdHH9fPJeHLWstzzz3HrbfeSkpKCnXq1KnS69fE7n2stfv4dQS/iFQjr89S4vFS5rUUlnrIL/awO7+UtbvycQW6bb1eH6t35B9oRXt9li/W7MZlICHG323947Y8ot0Gn4X8Ek8VVFb2uyPloek2hjKfjzKvpfMpdcg8OYWEmCiiXIa9haW0bJBMlMuFx+ejUe14ogLPYOsk+luybpchxu0iKfB890AX8tEHGYtUq71793LNNdfw5ptvcv755zNt2jTS09Or9B41MvRF5OgKSjwUlHjYmVcS6O72sXV/MdFu14Gu7p25/m5vl/F3aW/eV4THZ/l+aw4NasWxbMM+9gQGkFWVot/nNACn1E040OXcoFYcnZvVYWdeCZknpVBc5iMtOZbYKBcNa8cRH2hNWyAtOZZol4voKEP95DhcVTQwSqQmmjt3Lu+++y6PP/44t9xyCy5X1T9WUeiL1CA+n6Wg1MOe/FIWrdvDtpxitu4vYkduCQvX7qFB7Tg27i084fus4PdPzZJjo3C7/d3UrRvWYmuOP6DLnxO7XIbtOcW0bVz7wHPjvGIPWaekHmhlu12Gekn+bu/UhGi1nEUq4PV6yc7OJjMzk4EDB5KVlUXz5s2r7X4KfZEgKy7zsm53Aet3FzDvx52Uen288+1WYtwuSg+aA304hwZ+bJSLuGg3zdMS8XgtucX+wHYFusC37i+iZcNkEmL8I51zisoCrW4Xp9RNINrtok2jWtRNqq4JViJyJFu2bGHYsGF8/fXXrF69mpNOOqlaAx8U+iLHLbe4jM17iyj1+li8bg/RbhdlXh8rt+SSnhyLx2f5eWc+eSUedueVVDgYrTzwy8M/Ldk/0OuSzMY0ToknLSmW2GgXaUlxNEqJ04hqkRD23nvvMXLkSIqKipg8eTJNmzYNyn0V+iJHkFNYxu6CElZuyWFXXgn5JR5Wbsnl20372Z1fcsLXb5GeRNvGtdmVV8LlWU0485Q6NKwdpy5xkTBmreXWW2/liSeeoEOHDsycOZMzzjgjaPdX6EvEKS7zsnJLDoWlXjbsKWDz/iI27y0iJsrFol/2sDWnmJgoF6Weo3e1l2uRnkTt+GjW7ynkzx0a4XIZ8orLOC09mWi3oaDEy0l1EmiSGk/9WnHUS4pRK10kQhljcLvd/PWvf+WRRx4hLi4uqPdX6EtYKPF4+WbjfjYFnnmv3JLD3sIytu0vYuXWHKJcLuKiXezOr9xo9fLAT4hx4/FaGqbEcVpaEifVTSA+2s1p6Un0bplOSkJMtf1MIhIerLVMnz6dFi1acPbZZ/PYY4851qOn0JcazVrL91tz+XF7Htv2F7F5XxE/7shj9fZcist8JMdGUebzUVxWUavcx6E98rFRLrqdVo+decU0SUng5HoJtGpQi7hoF6elJ5FeK45acVo8RUSOX15eHtdffz3/+c9/GD58OGeffbajj/AU+lIjbN5XyAffbWPlllxiolwsXLunUquw5R20CEx5l3z30+rROCWeEo+XC9o1pGHteGKiXNRJjCHa7V8NLTbKXZ0/jogIS5cuZfDgwaxbt44HHniAu+++2+mSFPoSfIWlHj7/aRdPf/ozP23Pr3CaGsAZ9ZOJjjI0r5dEk9R4WtRP4vT6yTRJSSA6yr89ZUyUnpOLSM2wePFiunfvToMGDZg/fz7du3d3uiRAoS9BsGV/EX+b8Q1rd+Wzr/AIS7YFdGlWhw4npdCqQS1iovzd7KelJWklNhEJCT6fD5fLRadOnRg7diw33nhjla+ffyIU+lKlyrw+PvhuG++v2MbCtXuA33bBH6xBrTgap8Zza9/TA/tVq6UuIqFr7ty53HrrrcyePZtGjRpx3333OV3S7yj05YTsLShl2oL1vL5kE/uLSo86oO68Vulc1qkpmSelkF4ruNNURESqS1lZGffddx+PPPIILVu2JDc3l0aNGjld1mEp9KVCPp/ll935bMsp5rstOXi9ls/X7GLJ+n2HPd/tMqQlxXJJZmPOaJBMjxZppCZqapuIhJ9169YxZMgQFi1axDXXXMMTTzxBQkKC02UdkUJffiO/xMMnq3awense+wrLmLlkI9ZW/H2n1E1g9DnNGZjVVAPqRCRiTJgwgR9//JHXX3+dgQMHOl1OhYytzG/0GiwrK8suXbrU6TJClrWWdbsLmPPDDt7+Zgs/bs874rlx0S5apCdTVOafCndWszp0PCmV+BhNfxORyFFYWMjevXtp0qQJ+/fvZ9++fTRr1iyoNRhjlllrs471+9TSj1Affb+dv7+RTV7x4QfZNauXSPsmtWmSGk/T1AQu7dREA+1EJOJ99913DBo0iMTERBYtWkRKSgopKSlOl1VpCv0IYa1lwdo9PPrRan7ankdRmfd35zRJjedvfVpweVZwdnsSEQkV1lqee+45brnlFlJTU3nyySdxuUKvIaTQD1M+n2XzviKmfPkLbyzbjLX8JugTYty0bVSbjielcGu/07VCnYjIEeTk5DBq1Cjeeustzj//fKZNm0Z6errTZR0XhX6Y8PksH6zcxrQF6484qh4g6+RULs5szGWdmijoRUQqISYmhg0bNvD4449zyy23hGQLv5xCPwx8tnonI19acsT3T0tP4ta+p9OvdX1t6SoiUgler5enn36aq666iuTkZBYtWkRUVOhHZuj/BBFqZ14xlz+3kA17Cn9zvEPTFDo0TWFE15NpnpbkUHUiIqFr8+bNDBs2jPnz5xMXF8eYMWPCIvBBoR9yFq/by/Of/8LcVTt+czwpNooFd/fWVrAiIifg//7v/xg1ahTFxcW8/PLLjBgxwumSqpRCPwSUeX3c8+Z3vLFs8+/e+2NGIx68uC3JCnsRkRPyzDPPcOONN9KxY0dmzJjBGWec4XRJVU6hX4NZa7ltVjZvfrPlN8ej3YaHL2nPJZmNMUa7z4mIVIWLLrqIjRs3MmHCBGJjY50up1poRb4aKr/EQ9v7P/rNsYvaN2RUt1PodHLN2aZRRCRUWWuZNm0aH374ITNmzAipUflakS9MeLw+hrzw9W+m3bVqWIu3bjibuGhNsRMRqQq5ublcf/31vPbaa/Tq1Yv8/Hxq1arldFnVTqFfgyxYu5srXlj0m2N3nt+S63ud6lBFIiLhZ8mSJQwZMoT169fzwAMPcPfdd+N2R0ajSqFfA1hrGTF1MV+s2X3g2N/6tOCvfVrgdumZvYhIVSkrK2PgwIH4fD7mz59Pt27dnC4pqBT6Dtu0t5BzHv30N8eWj+tLHe0/LyJSZXbt2kVqairR0dG89dZbnHzyyaSmpjpdVtCFzqiFMHTzzG9+E/h3D2jJun9eoMAXEalCH3/8Me3atWPChAkAdOjQISIDHxT6jtiVV8Ipd73P299uBaBeUixPDunImJ6nagqeiEgVKSsr46677qJ///7UqVOHyy+/3OmSHKfu/SDakVvMnf9vBZ+t3nXgWI/T05g26kyFvYhIFVq3bh1Dhgxh0aJFXHPNNTzxxBMkJCQ4XZbjFPpBYK3lP4s2Mvbtlb85fv8fWjOqWzOHqhIRCV/79u1j3bp1zJo1Sy38gyj0q9neglIue24Bv+wqOHDs0UvbM/DMpg5WJSISfgoKCnj77bcZOnQomZmZrFu3Tq37Qyj0q4nH6+PlBeuZ+P6qA8fOal6HcRe1pk2j2g5WJiISflasWMGgQYNYvXo1HTp0oE2bNgr8w1DoV4Mv1uxi+JTFvzmm1r2ISNWz1jJ58mRuvfVWUlNT+fjjj2nTpo3TZdVYCv0qVOrxMezFRSxev/fAsXpJMTw7tBOdm2m9fBGRqjZy5EimT5/OgAEDePnll0lPT3e6pBpNoV9Flq7fy2XPLTzwdXJcFF/dpf3tRUSqU79+/cjIyODmm28OqQ1znKLQrwI5RWW/CfynhnTkDxmNHKxIRCQ8eb1eHnzwQRo2bMg111zD0KFDnS4ppOhjURUY8MTnB15/cce5CnwRkWqwefNm+vTpw/3338+SJUucLickqaV/gh6Z/SNbc4oBGHdRa5rW0WhREZGq9u677zJq1ChKSkqYNm0aI0aMcLqkkKTQPwFTv1zH5M/WAuB2Ga7uroV2RESq2qpVq/jzn/9Mhw4dmDlzJqeffrrTJYUsde8fp5mLNzLhvR8AODUtkTUTBzhckYhIeMnJyQGgVatWvPXWWyxcuFCBf4IU+sfhnW+3cNeb3wGQlhzLRzf3wKV970VEqoS1lpdffpmTTz6ZBQsWAPCnP/2J2NhYhysLfQr9Y7RxTyF/m/ktAC0bJPP57ecS5dY/o4hIVcjNzWXo0KGMGjWKjh07cvLJJztdUlhRWh2jYVMWAf55+O//9RziY9wOVyQiEh6WLFlCx44dmTVrFhMnTmTu3Lk0btzY6bLCigbyHYP/t2wzG/cWAjDlyjNxq0tfRKTKfPzxx3g8HubPn0+3bt2cLicsqaV/DN7J3grAKXUTtKyuiEgV2LFjBwsX+hc3u/POO8nOzlbgVyO19Ctp8mdr+fynXUS7Df+55iynyxERCXlz5sxhxIgRxMTE8PPPPxMTE0NKSorTZYU1tfQrYX9hKY/M/hGA9k1SaJwS73BFIiKhq6ysjLvuuov+/ftTt25d3n//fWJiYpwuKyKopV+BzfsK6f7IpwDUjo9m1piuDlckIhK6cnNz6devH4sWLeLaa6/lX//6l/a9DyK19I+ixOM9EPgAL4zI0uA9EZETkJycTNu2bZk1axb//ve/FfhBptA/ign/98OB13cNaKnBeyIix6GgoIC//OUvrFmzBmMML774IpdffrnTZUUkde8fwbIN+/jPoo0A/L3f6VzX81SHKxIRCT0rVqxg0KBBrF69mvbt29OiRQunS4poaukfhrWWSycvOPD1X849zcFqRERCj7WWZ555hs6dO5OTk8PcuXMZM2aM02VFvKCHvjFmijFmoTFm7BHeTzXGfGCMWWqM+Xew6wN44YtfDrx+64azMUbP8UVEjsW///1vbrzxRvr06UN2dja9e/d2uiQhyKFvjLkEcFtruwLNjTGH6+cZDvzHWpsFJBtjsoJZo89neegD//S8rJNT6XhSajBvLyIS0kpKSgC48sormTJlCu+99x5paWkOVyXlgt3S7wXMCryeA3Q/zDl7gLbGmBSgKbApOKX5PTlvzYHX06/uHMxbi4iELK/Xyz/+8Q86dOhAXl4e8fHxXHXVVeoprWGCHfqJwJbA671A/cOc8yVwMvBXYFXgvN8wxlwb6P5fumvXriot8M3l/vLaN6lNQozGOYqIVGTz5s307t2b8ePHk5UV1M5ZOUbBDv18oHw5u6Qj3P9+4Dpr7QTgR2DUoSdYa5+31mZZa7Oqstvom437Dmyo869BHarsuiIi4eqdd94hIyODZcuWMW3aNF555RWSk5OdLkuOINihv4xfu/QzgPWHOScVaGeMcQNdABuc0mDi+6sA6Nq8LqemJQXrtiIiIcnn8/HYY49x8skns3z5ckaMGOF0SVKBYPdfvw18YYxpBAwABhtjJlprDx7J/0/gJfxd/AuBGcEobN6PO1i2YR8A9/2hdTBuKSISkn788Ufq1q1LWloab775JrVr1yY2NtbpsqQSgtrSt9bm4h/M9zVwrrU2+5DAx1q72FrbxlqbZK3ta63ND0Zt49/1r77XPC2RVg1rBeOWIiIhxVrL1KlT6dSpE7feeisA6enpCvwQEvR5+tbafdbaWdba7cG+95H8vDP/wLP8Jwd3dLgaEZGaJycnhyuuuIKrr76aLl268MgjjzhdkhwHrcgHzF21A/C38ts2ru1wNSIiNcv3339PZmYmb7zxBhMnTuTjjz+mUaNGTpclx0Fz0oAXAyvwjerWzOFKRERqnvT0dOrXr88rr7zC2Wef7XQ5cgIivqW/M6+Y3fmlAFzQtoHD1YiI1Aw7duzgjjvuwOPxkJaWxldffaXADwMRH/oPBqbpAdRN0mAUEZE5c+bQvn17nnrqKZYvXw6glfXCRMSH/off+ccTdjpZa+yLSGQrLS3ljjvuoH///qSlpbFkyRI6d9Zy5OEkop/pf781h1KvD4BHLm3ncDUiIs4aNWoUr732GmPGjGHSpEkkJCQ4XZJUsYgO/Q++2wZAQoyb09K1bKSIRCav14vb7ea2227jkksu4dJLL3W6JKkmERv6Hq+P1xZtBGD8H9s4XI2ISPAVFBTw17/+lZiYGCZPnkxmZiaZmZlOlyXVKGKf6b++dBP7CstISYjmko6NnS5HRCSosrOzycrK4qWXXqJOnTpYG7RtTsRBERv673y7FYBzWqQR5Y7YfwYRiTDWWp5++mm6dOlCTk4Oc+fO5cEHH9To/AgRkWmXW1zGD1tzARjW5SSHqxERCZ4tW7Zw991306dPH7Kzs+ndu7fTJUkQReQz/Xe+3Up+iYcW6Ul0aV7X6XJERKrdypUradOmDU2aNGHx4sW0bNlSrfsIFJEt/Y9/8K+1f2azOg5XIiJSvTweD+PHjycjI4NXX30VgFatWinwI1TEtfSttfy0PQ+As09VK19EwtemTZsYOnQoX3zxBcOHD+fPf/6z0yWJwyIu9L/fmsv23GISY9z0b6O19kUkPL3//vuMGDGCkpISpk+fzvDhw50uSWqAiAv9z1bvBKDnGWlEa9S+iISxZs2aMWPGDFq0aOF0KVJDRFzqPT7nJwB6t6zvcCUiIlVr1apVvPTSSwBceOGFLFq0SIEvvxFRob87v+TA676tFfoiEh6stUyZMoWsrCzuvfde8vPzAXC73Q5XJjVNRIX+lC/XARDlMtSOj3a4GhGRE5eTk8OQIUMYPXo0Z511FkuXLiUpKcnpsqSGiqhn+hv3FAIwVAvyiEgYKCkpoXPnzqxdu5aHHnqIO+64Q617OaqICv3vt+YA0Le1Ru2LSOiy1mKMITY2lltuuYX27dtz9tlnO12WhICI6d7fV1DK+j2FRLkMnbUoj4iEqO3btzNgwAA+/PBDAK677joFvlRaxIT+0g37AEhPjiUmKmJ+bBEJI3PmzCEjI4P58+eze/dup8uREBQx6bd8oz/0+2lBHhEJMaWlpdxxxx3079+ftLQ0li5dqsV25LhETOhP/mwtAGdpgx0RCTHvvPMOjz32GNdddx1LliyhTZs2TpckISoiBvJ5vD6MAWvhjAbJTpcjIlIpGzdu5KSTTuKyyy7jq6++0rN7OWER0dL/eVc+1vpfN6uX6GwxIiIVKCgo4KqrrqJNmzasW7cOY4wCX6pERLT038veBkDP09McrkRE5Oi+/fZbBg8ezE8//cQ999xD06ZNnS5JwkhEtPQX/rIHAK/POlyJiMiRPf3003Tp0oXc3Fzmzp3LxIkTiYqKiLaZBEnYh77PZ1kWmK53fa9THa5GROTIvvvuO/r27Ut2dja9e/d2uhwJQ2H/EbJ8qh7A2adq5L6I1Czz58+nVq1adOzYkaeeeoro6GiMMU6XJWEq7Fv6/122GYCL2jfUf0giUmN4PB7uv/9+evfuzdixYwGIiYnR7ympVmHf0t8Q2GSnTaPaDlciIuK3adMmhg4dyhdffMGIESN4+umnnS5JIkTYh/6P23MBOK9VusOViIjAypUr6dGjB2VlZbzyyisMGzbM6ZIkgoR19/6uvBL2FZYR7TY0T9P+0iLivJYtWzJo0CCWL1+uwJegC+vQX7MjD4DWjWrjduk5mYg4Y9WqVQwYMIDdu3cTFRXF5MmTadGihdNlSQQK69DfkVcMQJOUeIcrEZFIZK1lypQpZGVlsWzZMtauXet0SRLhwjr0V2zOASC9VqzDlYhIpMnJyWHIkCGMHj2arl27kp2dTZcuXZwuSyJcWId+XrEHALemwIhIkN1+++3897//5aGHHmLOnDk0bNjQ6ZJEwnv0/nsrtgJwZrM6DlciIpHA5/ORk5NDamoqDz74IKNGjaJr165OlyVyQNiGvrWW2Cg3xWU+Wjes5XQ5IhLmtm/fzogRIygsLOSzzz4jLS2NtDRt8iU1S9h27xeX+cgpKgOgSaoG8olI9fnoo4/IyMg4sNiO2+12uiSRwwrb0N9fVApAvSQtayki1aO0tJTbb7+d888/n/T0dJYuXcq1116r3zlSY4Vt6Jcvv5ueHOdwJSISrkpKSnj77be57rrrWLx4MW3atHG6JJGjCttn+j/vzAegoNTjcCUiEm7eeecd+vXrR3JyMsuWLaNWLY0bktAQti39/BJ/2J9UJ8HhSkQkXOTn5zNq1Cj+/Oc/88wzzwAo8CWkhG1Lf9Nef/f+uWdoox0ROXHffvstgwYNYs2aNYwbN46bb77Z6ZJEjlnYhv5nq3cB0Fgj90XkBL3++uuMGDGCevXq8cknn3Duuec6XZLIcQnb7v0t+4sAOKN+ssOViEioy8zM5OKLLyY7O1uBLyEtLEN/X0Hpgdd6pi8ix2P+/Pn89a9/xVpLixYtmDlzJvXq1XO6LJETEpahv3aXf+T+qWmJuLSlrogcA4/Hw/3330/v3r2ZPXs2e/bscbokkSoTlqG/JjBdz2cdLkREQsqmTZs499xzmTBhAsOHD2f58uVq3UtYCcuBfPMDg/i6nVbX4UpEJFR4vV7OO+88tm7dyquvvsrQoUOdLkmkyoVl6LsDXfrJcdEOVyIiNV1xcTHR0dG43W6ef/55GjduzGmnneZ0WSLVIiy79zcG5uif00LdciJyZKtWraJz58489thjAPTs2VOBL2EtLEN/b2D0fuMUzdEXkd+z1vLiiy/SqVMntm/fTkZGhtMliQRF0EPfGDPFGLPQGDO2gvOeNcb84XjuUT5Hv15S7PF8u4iEsZycHIYMGcI111zD2WefTXZ2NgMGDHC6LJGgCGroG2MuAdzW2q5Ac2NMiyOcdw7QwFr7f8d6j+Iy74HXCTHa01pEfuuHH37g7bff5qGHHmLOnDk0bNjQ6ZJEgibYLf1ewKzA6zlA90NPMMZEAy8A640xfzrWGxQENtqJj3ZrT2sRAcDn8zFv3jwAunbtyvr167n77rtxucLyCafIEQX7//GJwJbA671A/cOcMwL4AXgU6GyMuenQE4wx1xpjlhpjlu7ates37+UUlQHg1SR9EQG2bdtGv3796NOnD8uWLQOgQYMGDlcl4oxgh34+UD66LukI9+8IPG+t3Q68CvxuoWtr7fPW2ixrbVZaWtpv3iss9Xfv107QdD2RSDd79mwyMjJYsGABL7zwApmZmU6XJOKoYIf+Mn7t0s8A1h/mnJ+B5oHXWcCGY7nBrrwSAFLiFfoikWzs2MZaNJIAACAASURBVLEMGDCABg0asHTpUkaPHq1HfhLxTjj0jTGuwMC7yngbGG6MmQQMBL43xkw85JwpwLnGmM+BG4DHj6WeUq8P+HWBHhGJTE2bNuWGG25g0aJFtG7d2ulyRGqEClfkM8bEALcBDwNx1tqiwPE4YBD+gXkfARVuZ2etzTXG9AL6Ao8GuvCzDzknD7j82H6MX23Z55+ud3Jd7a4nEmlee+013G43gwYNYsyYMU6XI1LjVKal7wJuB24C7jvo+KvAPYAByip7Q2vtPmvtrEDgV7myQEvfoJa+SKTIz89n5MiRDB06lGnTpmGtBvKKHE5l1t4vBQqAD4ClxpiFQAv80+86WWsLjTHeo3x/UO3I9T/T73BSisOViEgwfPPNNwwePJg1a9Ywbtw47rvvPj27FzmCCkPfWuszxpRZa382xtwCbAS+ARYDfzLGzDr6FYJrR14xAGlajU8k7P3yyy+cddZZpKWlMW/ePHr16uV0SSI12rHusrfdWvutMaYj8CTQGlhY9WUdv/LR+/VrxTlciYhUF4/HQ1RUFM2bN+d///d/ueyyy7TvvUglVHr0vjGmM/D/jDHn459K9wuww1q7BGrOA/T8Yv+KfCmapy8Slj777DNOP/10vvnmGwCuu+46Bb5IJR019I0xZxlj3gl8+Q3wGP5pd3vxj7BPDUy/izfGTAr8ecIY81y1Vn0UBaX+0Ne6+yLhxePxcN9999G7d2+io6O1hK7Icaioe785/qVzo4G3gPHA3/DPpbdALnAq/g8PzQLf4wYc61vfF9hWt7YW5xEJGxs3bmTo0KF8+eWXjBw5kqeeeoqkpCSnyxIJOUcNfWvta8BrxpjN+AP+Efxh3wd4B//c/KuBNdbai6u51gpZa8kNdO/XUuiLhI2XXnqJ7OxsXn31VYYOHep0OSIhq7L9Y6XW2iuAfUBtoBi4DKgFnIz/g4Djig7aVjfara4/kVBWVFTEDz/8AMA999zDihUrFPgiJ+hYk/E5oBWwB3/Xf5a1dlmVV3Wc8gPb6tZNjHG4EhE5ET/88ANdunShX79+FBUVER0dzSmnnOJ0WSIhr8LQN/5VLmKNMXWAmfif7yfin7KXXr3lHZvy6Xrq2hcJTdZann/+ebKystixYwcvvvgi8fHxFX+jiFRKZebpx+J/dn8+MMNauxLAGDMCmG6MORuoEU3r9bsLAUhP1sI8IqGmqKiIK6+8kjfeeIPzzjuPV155Rfvei1SxynTve4Ab8bfy7yo/aK39EHgC8OH/YOC4wsB0vbzAYD4RCR2xsbGUlJTw8MMP89FHHynwRapBZZbh9QD/CXxZcMh7/wx0/3eqhtqO2bIN+wDo3kILdYiEAp/Px6RJkxg4cCAnnXQSb7/9ttbNF6lGJzzE3fqtqIpiTlRslP/HKSmrMfv/iMgRbNu2jX79+nH77bczbdo0AAW+SDWrVOgbY2KNMW8aY2IDX9czxqQbYxKNMV5jTOJB5043xnSrroKPZn+Rf4ffto1rO3F7EamkDz/8kIyMDBYsWMALL7zA2LFjnS5JJCJUtAxv+cduH/CnwN8AU4GPgDL86+6XBM6vBQwGGlVHsRUpH72fmlAjxhWKyGHMnDmTCy64gAYNGrB06VJGjx6tFr5IkFTU0n/HGPNHa20ZgLW2zBhzDf6R/LdZa0v9h235yLkR+BfwebvaKj6K1dvzAIjXuvsiNY61/jW8LrzwQu677z4WLVpE69atHa5KJLIcMfSNMS78m+zMCEzPwxjTFPgf4A5r7bxDzo8DbgbuL/+QEGzlywImxh7rjsEiUp1effVVunfvTlFREcnJyfzjH//Q/HsRBxwx9K21Pmvt/fh30xseOPwksMha+8RhvuWfwDbg+SqvspL2Ffo326mj7n2RGiE/P5+RI0cyfPhwXC4XeXl5TpckEtEqM2XvA+ADY4wPuBPIB//zfuvvrzPGmP8B/gycZa31Hflq1Ssh2k1BqZfURK3IJ+K0b775hsGDB/Pzzz9z3333MW7cOKKi1Asn4qSj/hdojJkNFAa+tMDDgCswin+/MaZz4L0/AF2ttTuqrdIKWGspKPVP1UuI0S8WESdZa7nhhhsoKChg3rx59OzZ0+mSRISKW/rLCYzMx9+SbwW8jn/Z3a3AAuB/gSbAfcaYvzn1PL98sx0At0sjgUWcsHv3bqKiokhJSeG1114jOTmZevW0WJZITXHU0fvW2nustf/AP3gP/FvpJgWOP22tfQp/D0AH4EzghWqt9ij2F/o/a9RL0vN8ESd8+umntG/fnhtvvBGAZs2aKfBFapjK7LL3T2Au/nA/BxhqjLnx4HOstT/hn8c/wBjzx+ootCJFgVX4dueXOnF7kYjl8XgYN24cffr0oVatWvz97393uiQROYKKFue5FRgN/A3AWvsLMBT4pzGmeflpgfe24n/mf3+1VXsURYHn+e20Gp9I0GzatImePXsyceJERo4cybJly+jQoYPTZYnIEVTU0l8JXAQsBv/c/cD8/PeAxw9z/jSgrTGmbZVWWQk7cosB0MJeIsHjcrnYvn07r732GlOnTiUxMbHibxIRx1T0TH+OtXYR/oF7Bv8zffC36P9ojDkD/GvzB87fi39Bn4urreIjKO/e13KeItWrqKiIJ598Ep/PR+PGjfnxxx8ZMmSI02WJSCVUdpc9i3+Uvg/AWpsNnAVsAOYT6OIPmAF8UoU1VkpesX/0fuuGycG+tUjE+P777+ncuTN/+9vf+OyzzwCIjta6GCKholKhb60ttdbeYq3NPejYUmttsbX2XGtt8UHH/9dau6A6ij2a4kBLPy5a6+6LVDVrLc8//zxnnnkmO3fuZPbs2fTu3dvpskTkGFW2pV/jlQ/ki1foi1S5W265hTFjxtCtWzeys7Pp37+/0yWJyHGocOk6Y0wU0NBau6kS554KPGytvbwqijsW+aX+7v3kOHU1ilS1yy+/nIYNG3L77bfjcoVNW0Ek4lRmvdr2wJdAQvkBY0wD4APg7IO79oEk/NvuBl1+4Jl+grbVFTlhXq+XRx55hNzcXB5++GG6detGt27dnC5LRE5QZT6yFwOHLq1bBmQAh66EU3qYc4MiNxD6teK17r7Iidi6dSv9+vXj3nvvZcOGDfh8ju2hJSJVrDKh7w38OZgH/NvvHnLcsd8Ovz7TV+iLHK8PPviAjIwMFi5cyIsvvshrr72m7nyRMBI2Cfnr6H39ghI5Hjt37uSyyy6jRYsWzJw5k1atWjldkohUsbAJ/aUb9gKQkqANd0SOxY4dO6hfvz7p6enMnj2bzp07ExcX53RZIlINKtssrm2M+aX8D5ANmIOPBY7Prb5Sjy4p1v/5pXa8Ru+LVNarr77KaaedxowZMwDo0aOHAl8kjFW2pV8M/KMS5zUCbj/+co5fqcc/nCA1QaEvUpG8vDxuvPFGpk+fzjnnnEP37t2dLklEgqCyoV9irZ1W0UmBtfiDHvrWWgrKB/Jpyp7IUS1fvpzBgwezdu1axo8fz7333ktUVNg86RORowiL/9LLvBavz+J2GWKjFPoiR7N27VqKior49NNP6dGjh9PliEgQHXPoG2NGA+fw+2l8AI5sZu/1WQCiXNphT+Rwdu3axddff80f/vAHLr/8ci644AJtgysSgSoT+obfDvhLAOoQmKt/iKSqKOpYeQKLh0S7NV1P5FCffvopQ4cOpaCggA0bNpCSkqLAF4lQlQn9uMAfAKy1TwJPHu5EY0wrIOg77JW39N1q6Ysc4PF4GD9+PA899BCnn346H3zwASkpKU6XJSIOqjD0rbXfclDoVyAGiD+hio6DR937Ir9RVlZG7969+fLLL7nqqqt48skn1boXkarZWtcY094Y4wa+A+pXxTWPRUlgup5LoS8CQHR0NOeffz6vvfYaU6ZMUeCLCFCJ0DfGdDHGHPG8QNh/A6QBbqBh1ZVXOWWB0N+VVxLsW4vUGEVFRdxwww189tlnANx7770MGTLE2aJEpEapTEt/Bkfp3rfWevEP9isBhgFzAx8EgqbY459IcHp9R8YRijju+++/p3PnzkyePJlFixY5XY6I1FCVGchXCpQYY8YHvj7cTnoW/xS+m4H/Bj4IBM2+Av9uvpqjL5HGWssLL7zAzTffTHJyMrNnz6Z///5OlyUiNVRlQr885P8GrAC6A18DZwFr+HW+fjvgVKB3FddYcYHWP5Bv077CYN9axFHvvvsuY8aMoW/fvkyfPp0GDRo4XZKI1GDHMpDPAv3wd+VfEvh7EjAh8PrPwOvW2j1VXWRFduYVA5B5Umqwby3iiLy8PAD+8Ic/MHPmTGbPnq3AF5EKHc/ofRv4c+ix54D/OeGKjkOZx1/OnoJSJ24vEjRer5cHH3yQU089lY0bN+JyuRg0aBAulxamEpGKHbF7PzBi/wX8q+/1wD8y/8Dbh/mWXdba3Kotr3Js4DNIk9SgLxEgEjRbt25l2LBhfPrppwwZMoTatR1Z9VpEQtjRnulH498qNwn4AP/COzVS+ba6KfHaVlfC0/vvv8/IkSMpLCxk6tSpjBw5EmO0LoWIHJsj9glaa0ustQOAjfiDP6eCa7U0xlxelcVV1rYc/zN9rb0v4WrmzJk0atSIZcuWMWrUKAW+iByXyu6yZ4/w98H6AiOBN06wpmNWvuZ+TlFZsG8tUm3WrFmDz+fjjDPOYPLkyURFRREXV9kVsUVEfq+yTWMT+LMo8PfcwPF7gYcDr18AYowxA6q0wkoIzNijUYp+IUp4eOWVV8jMzOS6664DICkpSYEvIifsWFr6EwOvXz7kPYN/1H4x8C/gGuDDI13IGDMFaA28b62deJTz6gOzrbUdKypu5Vb/k4fUhBo77ECkUvLy8vjLX/7CK6+8Qo8ePZg+fbrTJYlIGKlM6McAcdbaw07HM/6Hi/+Df3T/dOB+Y0y0tfZ3fe3GmEsAt7W2qzFmqjGmhbV2zRHu+ziV3LEvPTkWgNxiT2VOF6mR1q1bR79+/fjll18YP348Y8eOxe3WKpMiUnUqE/rP8Ouqe4cTh7+1H2ut3W6M6X24wA/oBcwKvJ6Df3W/34W+MaY3UABsr0R9FJX5R++fmqadxCR0NWrUiFatWjFlyhR69OjhdDkiEoYqfKZvrf2XtfaI29dZa4uAZsCOwNffHOVyicCWwOu9HGYbXmNMDDAOuOtIFzHGXGuMWWqMWbpr1y4KSvwt/PhotYoktOzatYsxY8aQk5NDbGws7777rgJfRKpNlcxxs9ZusNYebkT/ofL5tcs+6Qj3vwt41lq7/yj3e95am2WtzUpLSyM/0K1fS/P0JYTMmzePjIwMXn75Zb7++munyxGRCBDsie3L8HfpA2QA6w9zznnAX4wxnwEdjDEvVnTRJRv2ApAQo5a+1Hwej4d7772X8847j1q1arF48WLtjCciQRHs0H8bGG6MmQQMBL43xvxmBL+1toe1tpe1thfwrbV2dEUXPblOAqCtdSU03HHHHTz00EOMGjWKZcuWkZGR4XRJIhIhKjtlr0pYa3ONMb3wL+TzqLV2O5B9lPN7Vea66/f4t9Stre59qcFKS0uJiYnhtttuo0uXLgwaNMjpkkQkwgR93Vpr7T5r7axA4FeJwIJ8GsgnNVJhYSFjxozhoosuwufz0bhxYwW+iDgirBarT4hV6EvNsnLlSjp37szzzz9PZmYmPp/P6ZJEJIIFtXu/OlgLPgvRbqMNd6TGsNby73//m1tuuYXatWszZ84c+vbt63RZIhLhQj4lfYGZgmXeyswYFAmO/Px8HnroIXr27El2drYCX0RqhLBo6QPUTdS6++K8ZcuW0a5dO5KTk/nqq69o3LgxLlfIf7YWkTAR8r+Nylv68ZqjLw7yer08+OCDdOnShcceewyApk2bKvBFpEYJ+ZZ+eehXaj1AkWqwdetWhg0bxqeffsqQIUO46aabnC5JROSwQj70y7N+e26xo3VIZJo3bx6DBg2isLCQqVOnMnLkSPwbT4qI1DwhH/rlqd+6YS1n65CIlJaWxmmnncZLL71Ey5YtnS5HROSoQv6BY3lL3+1S60qC46effuKf//wnAO3atWPBggUKfBEJCaEf+oGH+dFuhb5Uv+nTp5OZmcnjjz/O1q1bAdSdLyIhI/RDP/C3WvpSnfLy8hg+fDhXXnklnTp1Ijs7m0aNGjldlojIMQn5Z/penz/2FfpSXay19O7dm+XLlzN+/HjGjh2L260poiISekI+9Mujfv3uQkfrkPDj8/kwxmCMYdy4caSkpNCjRw+nyxIROW5h072f0bS2o3VIeNm5cycXXXQRTz/9NAB//OMfFfgiEvJCP/QDqR+llc+kinzyySdkZGQwb948YmK0vLOIhI+QT8oyr3+rUu2wJyeqrKyMe+65h759+5KamsrixYsZM2aM02WJiFSZkE9KV2AA36a9eqYvJ2bp0qU8/PDDXH311SxZsoT27ds7XZKISJUK+YF85fP0WzVMdrgSCVWrVq2iVatWdO3alezsbNq1a+d0SSIi1SLkW/rlA/liokL+R5EgKywsZMyYMbRt25ZFixYBKPBFJKyFQUvfP21Pz/TlWKxcuZLBgwfz/fffc+edd5KZmel0SSIi1S7kQ7/E4yUeLc4jlffiiy9y0003Ubt2bebMmUPfvn2dLklEJChCvnlc3sLfnV/icCUSKnJycujZsyfZ2dkKfBGJKCEf+uUP9U+um+hsHVKjffXVV8yePRuAW265hQ8++ID69es7XJWISHCFfOgf2HBHO53JYXi9XiZOnEjPnj0ZN24c1lpcLhcuLeYkIhEo5H/zlU/Z0zN9OdSWLVs477zzGDduHAMHDuSTTz7RNrgiEtFCfiBfOYW+HGzLli1kZGRQVFTESy+9xJVXXqnAF5GIF/Khf6B7X6Ev+Ht+jDE0atSIG2+8kcGDB9OyZUunyxIRqRFCvnvfp+59Cfjpp5/o0aMHq1atwhjD+PHjFfgiIgcJ+dAv9fg33PH6bAVnSriy1jJt2jQyMzP54Ycf2Lp1q9MliYjUSCEf+jGBefrlu+1JZMnLy2P48OGMHDmSrKwsVqxYQZ8+fZwuS0SkRgr50C9v39dJ1L7nkehf//oXM2bMYMKECXzyySc0btzY6ZJERGqskB/IVy5K864jhs/nY/v27TRq1Ig777yT888/n86dOztdlohIjRfySRkYx4f224kMO3fu5KKLLqJbt27k5+cTGxurwBcRqaQwaOmXj95X6oe7Tz75hGHDhrFv3z4mTZpEYqKWXhYRORYhn5Rq6Yc/j8fDPffcQ9++fUlNTWXx4sXccMMNWmxHROQYhXxUlgZG7aulH76MMSxYsIDRo0ezZMkS2rdv73RJIiIhKeS798tbeyVlXocrkar25ptvcvbZZ9OgQQNmz55NXFyc0yWJiIS0kG8euwM9vLXjo50tRKpMYWEh1157LZdeeimPPfYYgAJfRKQKhHxLv3yefpQe6oeF7777jsGDB7Nq1SruuusuJkyY4HRJIiJhI/RDP5D6UVp7P+TNnj2biy++mNq1a/PRRx/Rt29fp0sSEQkrId88/rWlr9APdZ07d2bw4MFkZ2cr8EVEqkHIh74vsNGOVuQLTV9++SWXXXYZpaWl1KlTh5deeon69es7XZaISFgK+aQsn7KnKduhxev18sADD9CzZ0++/fZbtmzZ4nRJIiJhL+RDPzowgC8+2u1wJVJZW7Zs4bzzzuO+++5j8ODBLF++nGbNmjldlohI2AuDgXz+7v2YqJD//BIxhgwZwvLly3n55ZcZMWKEVtYTEQmS0A/9wN8avV+zlZSU4PV6SUhI4LnnnsPtdnPGGWc4XZaISEQJ+ebxr1P2Qv5HCVurV6/mrLPO4qabbgKgdevWCnwREQeEfFL6AqmvKXs1j7WWl19+mU6dOrFp0yYuvvhip0sSEYloIR/65dzq3q9RcnNzGTZsGKNGjeLMM88kOzubiy66yOmyREQiWtiEfqwG8tUoe/bsYfbs2TzwwAPMnTuXxo0bO12SiEjEC/mBfADRbqMR4DWAz+fj7bff5uKLL6ZZs2asXbuWlJQUp8sSEZGAsGgex2izHcft3LmTCy+8kEsvvZT3338fQIEvIlLDhEdLX137jpo7dy7Dhw9n3759PPvss1x44YVOlyQiIocRFmm5v7DM6RIi1qOPPkq/fv1ITU1lyZIlXH/99XrUIiJSQ4VF6KcnxzpdQsTq2LEjo0ePZunSpbRr187pckRE5CjContf0/WCa9asWWzYsIHbb7+dvn37ahtcEZEQERYtfZe6k4OioKCAa665hkGDBvHOO+/g8XicLklERI5B0EPfGDPFGLPQGDP2CO/XNsZ8aIyZY4x5yxgTU9E1tQJv9VuxYgVZWVlMmTKFu+++m08//ZSoqLDoKBIRiRhBjUtjzCWA21rbFWhujGlxmNOGApOstf2A7cD5FV1XLf3qtW/fPrp3787+/fv5+OOPeeihh4iOjna6LBEROUbBbqr1AmYFXs8BugNrDj7BWvvsQV+mATsPvYgx5lrgWoCYBqcp9KtJUVER8fHxpKamMm3aNLp160Z6errTZYmIyHEKdsd4IrAl8HovUP9IJxpjugKp1tqvD33PWvu8tTbLWpvlP7c6So1sX375JWeccQbvvPMOABdffLECX0QkxAU79POB+MDrpCPd3xhTB3gKuKoyF1VLv+p4vV4mTJhAz549iYmJ0Zr5IiJhJNihvwx/lz5ABrD+0BMCA/feAO621m6ozEU1Y69qbN68mT59+nD//fczZMgQli9fTlZWltNliYhIFQl26L8NDDfGTAIGAt8bYyYecs7VQCZwrzHmM2PMoIouqpZ+1Zg3bx5Lly5l2rRpvPrqq9SqVcvpkkREpAoZa21wb2hMKtAX+Nxau/1ErxfbsIXtfddUPvzbOSdeXAQqKSlh+fLldO3aFWst27Zto1GjRk6XJSIiR2GMWVY+ru1YBH2Gu7V2n7V2VlUEfjl17x+f1atXc9ZZZ9G3b1927dqFMUaBLyISxsJiWZsoba17TKy1vPzyy3Tq1IlNmzYxc+ZM0tLSnC5LRESqWVikZZSa+pXm9XoZPnw4o0aN4swzzyQ7O5uLLrrI6bJERCQIwiL0lfmV53a7SU9P54EHHmDu3LmakiciEkHCYvF07d9+dD6fj0mTJnHOOefQpUsXJk2a5HRJIiLiALX0w9yOHTu44IILuP3225kxY4bT5YiIiIPCoqWvefqHN2fOHEaMGEFOTg6TJ09mzJgxTpckIiIOUuiHqU8++YT+/fvTunVr5s6dS9u2bZ0uSUREHBYe3fvq3z/A6/UC0KtXLx5//HGWLFmiwBcRESBcQl+ZD8Drr79O69at2b59O263m9tuu42EhASnyxIRkRoiTEI/slO/oKCA0aNHM3jwYOrUqUNZWZnTJYmISA0UJqHvdAXOWbFiBVlZWUydOpV77rmHzz//nKZNmzpdloiI1EBhMZAvkufpP/TQQ+Tk5PDxxx/Tp08fp8sREZEaLCxCP9Ja+nv37qWgoICmTZvy7LPP4vV6tXa+iIhUKCy699fszHe6hKD54osv6NChA1dccQXWWurUqaPAFxGRSgmL0G/TqLbTJVQ7r9fLhAkT6NWrF7GxsTzxxBMR/VhDRESOXVh077vDPPt27tzJwIEDmT9/PsOGDePZZ58lOTnZ6bJERCTEhEXoh/viPImJiRQWFjJt2jRGjBjhdDkiIhKiwqJ73x2G3dzFxcVMnDiRgoICEhMT+frrrxX4IiJyQsIi9MNtcZ4ff/yRs846i3HjxvHee+8B4HKFxf9UIiLioLBIknDp3rfWMnXqVDp16sSWLVt47733GDRokNNliYhImAiL0HeHxU8BEydO5Oqrr6ZLly5kZ2dz4YUXOl2SiIiEkbAYyBfqz/SttRhjGDp0KDExMfz973/H7XY7XZaIiISZsGgjF5Z6nS7huPh8Ph577DEGDhyItZbmzZtz5513KvBFRKRahEXol3h8TpdwzHbs2MEFF1zAHXfcgc/no7i42OmSREQkzIVF6DeoHed0Ccdkzpw5ZGRkMH/+fJ577jn++9//Eh8f73RZIiIS5sLimX4oPdEvLCxk5MiR1K1bl7lz59K2bVunSxIRkQgRFqEfCqm/adMmGjVqREJCAh999BGnnnoqCQkJTpclIiIRJCy692v64jyvv/46bdu25ZFHHgGgXbt2CnwREQm6sAj9mhr5BQUFjB49msGDB9OmTRuuuOIKp0sSEZEIFh6hXwNT/7vvviMrK4upU6dyzz33MH/+fE455RSnyxIRkQgWFs/0a2L3flFREYWFhcydO5fevXs7XY6IiEiYtPSdLiBgz549TJ06FYDOnTuzZs0aBb6IiNQYYRH6NaF///PPP6dDhw5cf/31rF+/HoCYmBhnixIRETlIWIS+k5vseTwexo8fz7nnnkt8fDwLFy7Us3sREamRwuKZvnGog99ayx//+Ec+/PBDhg8fzjPPPENycrIjtYiIiFQkPELfoZa+MYYrrriCIUOGMHz4cGeKEBERqaSwCP1gdu8XFxdz++23k5mZyahRoxg2bFjwbi4iInICwuKZvglSU3/VqlV06dKFp59+mp9//jko9xQREakqYdHSr27WWl566SVuuukmEhISeP/997ngggucLktEROSYhEVLv7oX51m6dClXX301Xbp0ITs7W4EvIiIhKSxa+tWV+bt27SItLY0zzzyT2bNnc9555+F2u6vnZiIiItUsLFr6VZ35Pp+PRx99lFNOOYUlS5YA0L9/fwW+iIiENLX0D7Fjxw5GjBjBnDlzuPTSSznttNOq7uIiIiIOCouW/vackiq5zpw5c8jIyODzzz/nueee44033iA1NbVKri0iIuK0sGjpN60TXyXXWbhwIfXq1eOTTz6hTZs2VXJNERGRmiIsWvonMnr/l19+4auvvgJg7Nix7SXrTgAACrJJREFULFmyRIEvIiJhKUxC//i+b8aMGXTo0IHRo0fj9Xpxu93Ex1dNr4GIiEhNExahf6wj+QoKCrjqqqu44ooraNeuHbNnz9bIfBERCXth8Uz/WFr6u3bt4pxzzuGnn35i7Nix3H///URFhcU/g4iIyFGFRdodyzP9evXqce655zJ58mTOPffcaqxKRESkZgmL7v2KWvp79uxh6NCh/PLLLxhjFPgiIhKRwiL0j7bL3vz588nIyOCNN944sLqeiIhIJAqP0D/MMY/Hw/jx4+nduzcJCQl8/fXXDBo0KOi1iYiI1BRhEfqHe6Y/adIk/vGPfzBs2DCWLVtGZmamA5WJiIjUHOExkO+gjy75+fkkJSXxl7/8hVNPPZVLL73UucJERERqkLBp6RcXF3PjjTfSuXNnCgoKSExMVOCLiIgcJOihb4yZYoxZaIwZeyLnHGzzup/p0qULzzzzDOeff77m3YuIiBxGUEPfGHMJ4LbWdgWaG2NaHM85B/MW5nLbFQPYunUr77//PpMmTSI2NrZ6fgAREZEQFuyWfi9gVuD1HKD7cZ5zgK8oh1YZncjOzuaCCy6oojL/f3v3HyxVWcdx/P0Br+CvgDRBGc0aG38nMAZaU138EaJj6lhjpoU6DemYv2dKnExrKvs1TJbSiKXVZGZZYkxiYknhFBaUFGljTuEYamWFiiKEfPvjeRYO673s2cvdg3vu5zWzw+7ZZ89++bLsd89zzvM8ZmZm9VN1P/guwKp8/z9AX5fUt2wjaSYwMz9c99CDD6wYP378IIdqTfYAntneQdScc9x5znHnOcfVOGAgL6q66K8BGsvY7UrfPQ0t20TEXGAugKSlEXHE4IdqRc5z5znHneccd55zXA1JSwfyuqq795exubv+cGDlANuYmZlZm6o+0p8HLJa0NzAdeJ+kT0fEx7fS5siKYzQzM6ulSo/0I+I50oV6S4CpEbG8qeD31ebZFrud24FQ7ZWc585zjjvPOe4857gaA8qzImKwAzEzM7NXoVrMyGdmZmatdU3R78RMfralVvmTNErSAkn3SrpT0o5Vx1gHZT+nksZK+n1VcdVJGzmeI+mkquKqkxLfF2Mk3S1pqaQbq46vLvL3wOIWbUrXvq4o+p2Yyc+2VDJ/ZwKzI+JdwNPA8VXGWAdtfk6/xObhq1ZS2RxLejswLiLmVxpgDZTM8QeAW/Pwvd0keRhfmySNAb5Fmr+mvzZt1b6uKPp0YCY/e4VeWuQvIuZExML88HXAP6sJrVZ6KfE5lXQ08ALpx5W1p5cWOZbUA9wErJR0cnWh1UYvrT/H/wYOlTQa2Ad4oprQauVl4HTgua206aWN2tctRb95lr6xA2xj/SudP0lHAWMiYkkVgdVMyzzn0yZXAVdUGFedlPksfxB4GPgCMFnShRXFVhdlcvwA8HrgIuCR3M7aEBHPlRjB1lbt65aiPygz+dlWlcqfpNcCXwXOrSiuuimT5yuAORGxurKo6qVMjicCcyPiaeA7wNSKYquLMjm+GjgvIj4F/Bk4p6LYhpq2al+3FEbP5Nd5LfOXj0B/AMyKiMerC61WynxOjwUukLQImCDp69WEVhtlcvwY8MZ8/wjAn+f2lMnxGOAwScOBKYDHh3dGW7WvK8bpS3oNsBj4GXkmP+C9xYl9+mhzZIluEctK5vh84LPA8rzpaxFxe9WxdrMyeW5qvygiequLsPuV/CzvBtxM6grtAd4TEav62J31oWSOJwO3kLr4fw2cGhFrtkO4Xa/xPSDpYOD921L7uqLow6arGI8Dfpm75AbUxvrn/FXDee4857jznONXj3b+Lbqm6JuZmdm26ZZz+mZmZraNXPTNzMyGCBd9M+s4ScMlaXvHYTbUueib1YSkUyS9tZ/nRnZyrQRJ0yRdXnh8raSfFpp8Apifh2+V2d+ZeRIoMxtEO2zvAMxs0FwF/FzSbNK46IZZwH7AGZKCNIHHBRFxI4CkicBLtB5HPRwYCfwxItY3PfcscKWkPSPiY8A6YG3e/wnAR0lDjV4uvihPh7sDsC4iNhaeOhd4ETip0HY4sCOwMSLWtYjVzPrgom9WA5L2BQ4D3g1MBqZGxCJJ3yQV1POA83LbRaRZvBqWkIp0sejuSCrwxTm/h+XtB5Ans5E0AhDwG+BE4Lo8Br7oMuD8iGiszDgsIl7Kz50OXA+sldQo5D2kHyAbJK0s7KcH2Jm0ENFnSiXGzLbgom9WDzOAZRGxKh/Nt7LpiDsiRjQ/Kels4JqI2K/Ffj4PXNy0bdMPhUIsx0i6Jd+/Czgl378t/3lPRDyTX3MbMDq3mQD8NiI25tXDTiRNA21mA+Bz+mZdTtIOwIdIR+sN9+eCOwMYKek+Sc9LWk2asrPfpTrbdA2wO9ATEQL2B54CHiUV94OAH5NOLwwj9R6cUXj9TsCRwKOSjpN0BzCONG/7lcAvgOmSzgWWAnvlfZjZAPhI36z7nUM6T180NSIWNR5Iuo7Ufb8u+piRS9LFwIsRcVM7b1xcFCgvB/zdfHuetKjNGtIPjBXA5RExt+n1a4CPSJoLrAdOI/UULCT9IDg1In6SrzuYERHz2onPzLbkI32zLpbP5X8OmNPP8yMl7UlaSvYMYIaksyUd2tT0OOAdTduGSRpduO0haa8+3uPw3CU/H7g2Ii4jnfsfERF/z/u+GrhB0vwcT7MXgNWk6xKOJl0ncBYwXtIk0trs+3vYn9m2cdE3625Pkgrqsqbtje79tcA+wBeBM0nnyWcDb2pqv4HCef5sH+C/hdu/gAXFBpLeAvyOdIHdhIi4rhDXaknDI5lNWgxkX5q+dyRNBx4EjiH1CtxFunr/h8A00sI4+5FGIdwhaedWSTGzvrnom3WxiNgQEdf38dTUfI59J1JRvhu4PiJOIXWjLy2x+8cjQo0b6er55nkAVgCHRMTJEfGXpucmUxgREBH35W2bRg5IuhL4Nqkn4hHSamy7AV8hDQOcAhwCTCItgftm0hX/ZjYAPqdvVlO5K7zRHX4fcLykP5DO3T/R7v4iYgOpR6BoAfDOrfS6b+znOUkaBnwP+H5EPJY3TiGtB/4N4K8RcUleovWJiHhK0gQgcg9Cc8+EmbXgom9WT/cX7r8B+BFpVrwAbhjE9zkh73PT5DqSDgAeAlYB8yPi0kbjPE6/MUTwMNJpifWSmif72YX0g+Hswmth81wB00hX9ptZG1z0zeqpMTlPD7AhIkLSvaRz5eMG600i4sXiY0l7A7eSuuw/Cfwq9zjMioi1eSa/9fm1y+nnO0jSPGBlRFwyWLGamc/pm9XFcDb/f+5pbIyI/wG7SroKOB5YDtwsaWxeBGeCpINIQ/5GSTpQ0oGk8fA9jcf5dnBuv3/zm0vaXdKlpCP8R4CLIuJJ4CjSufgVki6UNKpzKTCzVnykb1YPI9k8ac2mGfbyAjz3kK6In0S6Cv/LwMOki+IeZMt595c07bf5cU/e32l5/5eQhgJOBP4EfDgi7mw0zufhe4GZpIl8Zku6PSLOavH3Kf6IMbNBoj7m6TCzGpE0NiL+0bRtj8a0t9u477cBxwLzcnf91tqOIA0ZfDIiFrdouxD4W0TM3NYYzWwzF30zM7Mhwt1nZmZmQ4SLvpmZ2RDhom9mZjZEuOibmZkNES76ZmZmQ4SLvpmZ2RDxfzw2qwJQ8SsCAAAAAElFTkSuQmCC\n",
      "text/plain": [
       "<Figure size 576x432 with 1 Axes>"
      ]
     },
     "metadata": {
      "needs_background": "light"
     },
     "output_type": "display_data"
    }
   ],
   "source": [
    "plt.rcParams['font.sans-serif'] = ['SimHei']\n",
    "def plot_roc_curve(fpr, tpr, label=None):\n",
    "    plt.plot(fpr, tpr, linewidth=2, label=label)\n",
    "    plt.plot([0,1], [0,1], 'k--')\n",
    "    plt.axis([0,1,0,1])\n",
    "    plt.xlabel('假正类率', fontsize=16)\n",
    "    plt.ylabel('真正类率', fontsize=16)\n",
    "    \n",
    "plt.figure(figsize=(8,6))\n",
    "plot_roc_curve(fpr,tpr)\n",
    "\n",
    "plt.show()"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 54,
   "metadata": {},
   "outputs": [
    {
     "data": {
      "text/plain": [
       "0.950298658620343"
      ]
     },
     "execution_count": 54,
     "metadata": {},
     "output_type": "execute_result"
    }
   ],
   "source": [
    "# 计算曲线下面积AUC\n",
    "from sklearn.metrics import roc_auc_score\n",
    "\n",
    "roc_auc_score(y_train_5, y_scores)"
   ]
  },
  {
   "cell_type": "markdown",
   "metadata": {},
   "source": [
    "   * 召回率TPR越高，分类器的假正类FPR就越多\n",
    "   * 虚线表示纯随机分类的ROC曲线，好的分类器应该远离这条线，向左上角\n",
    "   * 是使用精度/召回率 PR曲线，还是使用ROC，关键在于 正类非常少或者更关注正类而不是假负类，选择PR，反之ROC\n",
    "   * 例如：前面例子ROC曲线很不错是因为跟负类 非5 相比，正类 数据5 数量真的很少"
   ]
  },
  {
   "cell_type": "markdown",
   "metadata": {},
   "source": [
    "## 训练随机森林分类器，比较SGD分类器的ROC曲线和ROC AUC分数\n",
    "   * 获取训练集中每个实例的分数\n",
    "   * RandomForestClassifier 没有decision_funcion(), 但是拥有dict_proda()方法，sklearn中分类器都有这两个中的一个\n",
    "   * dict_proda返回一个矩阵，每行一个实例，每列代表一个类别的概率，比如这个图片 70%是5"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 55,
   "metadata": {},
   "outputs": [
    {
     "name": "stderr",
     "output_type": "stream",
     "text": [
      "c:\\users\\katie\\appdata\\local\\programs\\python\\python37\\lib\\site-packages\\sklearn\\ensemble\\weight_boosting.py:29: DeprecationWarning: numpy.core.umath_tests is an internal NumPy module and should not be imported. It will be removed in a future NumPy release.\n",
      "  from numpy.core.umath_tests import inner1d\n"
     ]
    }
   ],
   "source": [
    "from sklearn.ensemble import RandomForestClassifier\n",
    "forest_clf = RandomForestClassifier(n_estimators=10, random_state=42)\n",
    "y_probas_forest = cross_val_predict(forest_clf, X_train, y_train_5, cv=3,\n",
    "                                   method='predict_proba')"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 56,
   "metadata": {},
   "outputs": [
    {
     "data": {
      "text/plain": [
       "array([[1. , 0. ],\n",
       "       [1. , 0. ],\n",
       "       [0.1, 0.9],\n",
       "       ...,\n",
       "       [1. , 0. ],\n",
       "       [1. , 0. ],\n",
       "       [1. , 0. ]])"
      ]
     },
     "execution_count": 56,
     "metadata": {},
     "output_type": "execute_result"
    }
   ],
   "source": [
    "y_probas_forest"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 57,
   "metadata": {},
   "outputs": [],
   "source": [
    "# 绘制ROC曲线，需要决策值不是概率，直接使用正类的概率作为决策值：\n",
    "y_scores_forest = y_probas_forest[:, 1]\n",
    "fpr_forest, tpr_forest, threshols_forest = roc_curve(y_train_5, y_scores_forest)"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 58,
   "metadata": {},
   "outputs": [
    {
     "data": {
      "text/plain": [
       "array([0. , 0. , 0.9, ..., 0. , 0. , 0. ])"
      ]
     },
     "execution_count": 58,
     "metadata": {},
     "output_type": "execute_result"
    }
   ],
   "source": [
    "y_scores_forest"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 59,
   "metadata": {},
   "outputs": [
    {
     "data": {
      "image/png": "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\n",
      "text/plain": [
       "<Figure size 576x432 with 1 Axes>"
      ]
     },
     "metadata": {
      "needs_background": "light"
     },
     "output_type": "display_data"
    }
   ],
   "source": [
    "plt.figure(figsize=(8,6))\n",
    "plt.plot(fpr, tpr, \"b:\", linewidth=2, label=\"SGD\")\n",
    "plot_roc_curve(fpr_forest, tpr_forest, \"Random Forest\")\n",
    "plt.legend(loc=\"lower right\", fontsize=16)\n",
    "plt.show()"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 60,
   "metadata": {},
   "outputs": [
    {
     "data": {
      "text/plain": [
       "0.9927080292647016"
      ]
     },
     "execution_count": 60,
     "metadata": {},
     "output_type": "execute_result"
    }
   ],
   "source": [
    "# Rand 比 SGD 好很多， ROC AUC的分数也高很多\n",
    "roc_auc_score(y_train_5, y_scores_forest)"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 61,
   "metadata": {},
   "outputs": [
    {
     "data": {
      "text/plain": [
       "0.9843336275375111"
      ]
     },
     "execution_count": 61,
     "metadata": {},
     "output_type": "execute_result"
    }
   ],
   "source": [
    "# 再看一下 精度和召回率 也很高\n",
    "y_train_pred_forest = cross_val_predict(forest_clf, X_train, y_train_5, cv=3)\n",
    "precision_score(y_train_5, y_train_pred_forest)"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 62,
   "metadata": {},
   "outputs": [
    {
     "data": {
      "text/plain": [
       "0.8229109020475927"
      ]
     },
     "execution_count": 62,
     "metadata": {},
     "output_type": "execute_result"
    }
   ],
   "source": [
    "recall_score(y_train_5, y_train_pred_forest)"
   ]
  },
  {
   "cell_type": "markdown",
   "metadata": {},
   "source": [
    "## 总结\n",
    "   * 选择合适的指标利用交叉验证来对分类器进行评估\n",
    "   * 选择满足需求的精度/召回率权衡\n",
    "   * 使用ROC曲线和ROC AUC分数比较多个模型"
   ]
  },
  {
   "cell_type": "markdown",
   "metadata": {},
   "source": [
    "## 多类别分类器\n",
    "   * 尝试5 之外的检测\n",
    "   * 多类别分类器 区分两个以上的类别\n",
    "   * 随机森林 和朴素贝叶斯可以直接处理多个类别\n",
    "   * 支持向量机svm和线性分类器只可以处理二元分类器"
   ]
  },
  {
   "cell_type": "markdown",
   "metadata": {},
   "source": [
    "## 解决方案\n",
    "   1. 将数字图片分类0-9，训练10个二元分类器，每个数字一个，检测一张图片时，获取每个分类器的决策分数，哪个最高属于哪个，成为一对OvA\n",
    "   2. 为每一对数字训练一个二元分类器，区分0,1 区分0,2 区分1,2成为一对一OvO策略，存在N个类别，需要N*(N-1)/2个分类器，最后看哪个类别获胜最多"
   ]
  },
  {
   "cell_type": "markdown",
   "metadata": {},
   "source": [
    "## 优缺点\n",
    "   * OvO 只需要用到部分训练集对其必须区分两个类别进行训练\n",
    "   * 对于较小训练集合OvO比较有优势，大训练集合OvA虚度快，所以OvA更常用比如svm 在数据规模夸大是表现糟糕\n",
    "   * sklearn 检查到使用二元分类算法进行多类别分类任务，会自动运行OvA, svm分类器除外"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 63,
   "metadata": {},
   "outputs": [
    {
     "name": "stderr",
     "output_type": "stream",
     "text": [
      "c:\\users\\katie\\appdata\\local\\programs\\python\\python37\\lib\\site-packages\\sklearn\\linear_model\\stochastic_gradient.py:128: FutureWarning: max_iter and tol parameters have been added in <class 'sklearn.linear_model.stochastic_gradient.SGDClassifier'> in 0.19. If both are left unset, they default to max_iter=5 and tol=None. If tol is not None, max_iter defaults to max_iter=1000. From 0.21, default max_iter will be 1000, and default tol will be 1e-3.\n",
      "  \"and default tol will be 1e-3.\" % type(self), FutureWarning)\n"
     ]
    },
    {
     "data": {
      "text/plain": [
       "array([5.])"
      ]
     },
     "execution_count": 63,
     "metadata": {},
     "output_type": "execute_result"
    }
   ],
   "source": [
    "sgd_clf.fit(X_train, y_train)\n",
    "sgd_clf.predict([some_digit])"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 64,
   "metadata": {},
   "outputs": [
    {
     "data": {
      "text/plain": [
       "array([[-138724.98957832, -484886.8071167 , -376865.74827766,\n",
       "        -110852.91560102, -462777.60244122,  186565.89427828,\n",
       "        -784806.02182557, -234632.89093864, -660006.64749768,\n",
       "        -687165.29281662]])"
      ]
     },
     "execution_count": 64,
     "metadata": {},
     "output_type": "execute_result"
    }
   ],
   "source": [
    "# 内部实际上训练了10个二元分类器，货的图片的决策分数，然后选择了分数最高的类别\n",
    "# 返回10个分数，每个类别1个\n",
    "some_digit_scores = sgd_clf.decision_function([some_digit])\n",
    "some_digit_scores"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 65,
   "metadata": {},
   "outputs": [
    {
     "data": {
      "text/plain": [
       "5"
      ]
     },
     "execution_count": 65,
     "metadata": {},
     "output_type": "execute_result"
    }
   ],
   "source": [
    "np.argmax(some_digit_scores)"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 66,
   "metadata": {},
   "outputs": [
    {
     "data": {
      "text/plain": [
       "array([0., 1., 2., 3., 4., 5., 6., 7., 8., 9.])"
      ]
     },
     "execution_count": 66,
     "metadata": {},
     "output_type": "execute_result"
    }
   ],
   "source": [
    "# 目标类别列表会存储在classes_这个属性中，按值大小排列\n",
    "sgd_clf.classes_"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 67,
   "metadata": {},
   "outputs": [
    {
     "data": {
      "text/plain": [
       "5.0"
      ]
     },
     "execution_count": 67,
     "metadata": {},
     "output_type": "execute_result"
    }
   ],
   "source": [
    "sgd_clf.classes_[np.argmax(some_digit_scores)]"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 68,
   "metadata": {},
   "outputs": [
    {
     "data": {
      "text/plain": [
       "array([5.])"
      ]
     },
     "execution_count": 68,
     "metadata": {},
     "output_type": "execute_result"
    }
   ],
   "source": [
    "# 使用OvO策略，一对一或者一对多\n",
    "from sklearn.multiclass import OneVsOneClassifier\n",
    "ovo_clf = OneVsOneClassifier(SGDClassifier(max_iter=5, tol=np.infty, random_state=42))\n",
    "ovo_clf.fit(X_train, y_train)\n",
    "ovo_clf.predict([some_digit])"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 69,
   "metadata": {},
   "outputs": [
    {
     "data": {
      "text/plain": [
       "45"
      ]
     },
     "execution_count": 69,
     "metadata": {},
     "output_type": "execute_result"
    }
   ],
   "source": [
    "len(ovo_clf.estimators_)"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 70,
   "metadata": {},
   "outputs": [
    {
     "data": {
      "text/plain": [
       "array([5.])"
      ]
     },
     "execution_count": 70,
     "metadata": {},
     "output_type": "execute_result"
    }
   ],
   "source": [
    "# 使用随机森林\n",
    "forest_clf.fit(X_train, y_train)\n",
    "forest_clf.predict([some_digit])"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 71,
   "metadata": {},
   "outputs": [
    {
     "data": {
      "text/plain": [
       "array([[0. , 0. , 0.1, 0.2, 0. , 0.7, 0. , 0. , 0. , 0. ]])"
      ]
     },
     "execution_count": 71,
     "metadata": {},
     "output_type": "execute_result"
    }
   ],
   "source": [
    "# 随机森林直接将实例分为多个类别，使用predict_proba()可以获得分类器将每个实例分类为每个类别的概率列表\n",
    "forest_clf.predict_proba([some_digit])"
   ]
  },
  {
   "cell_type": "markdown",
   "metadata": {},
   "source": [
    "## 评估分类器"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 72,
   "metadata": {},
   "outputs": [
    {
     "name": "stderr",
     "output_type": "stream",
     "text": [
      "c:\\users\\katie\\appdata\\local\\programs\\python\\python37\\lib\\site-packages\\sklearn\\linear_model\\stochastic_gradient.py:128: FutureWarning: max_iter and tol parameters have been added in <class 'sklearn.linear_model.stochastic_gradient.SGDClassifier'> in 0.19. If both are left unset, they default to max_iter=5 and tol=None. If tol is not None, max_iter defaults to max_iter=1000. From 0.21, default max_iter will be 1000, and default tol will be 1e-3.\n",
      "  \"and default tol will be 1e-3.\" % type(self), FutureWarning)\n",
      "c:\\users\\katie\\appdata\\local\\programs\\python\\python37\\lib\\site-packages\\sklearn\\linear_model\\stochastic_gradient.py:128: FutureWarning: max_iter and tol parameters have been added in <class 'sklearn.linear_model.stochastic_gradient.SGDClassifier'> in 0.19. If both are left unset, they default to max_iter=5 and tol=None. If tol is not None, max_iter defaults to max_iter=1000. From 0.21, default max_iter will be 1000, and default tol will be 1e-3.\n",
      "  \"and default tol will be 1e-3.\" % type(self), FutureWarning)\n",
      "c:\\users\\katie\\appdata\\local\\programs\\python\\python37\\lib\\site-packages\\sklearn\\linear_model\\stochastic_gradient.py:128: FutureWarning: max_iter and tol parameters have been added in <class 'sklearn.linear_model.stochastic_gradient.SGDClassifier'> in 0.19. If both are left unset, they default to max_iter=5 and tol=None. If tol is not None, max_iter defaults to max_iter=1000. From 0.21, default max_iter will be 1000, and default tol will be 1e-3.\n",
      "  \"and default tol will be 1e-3.\" % type(self), FutureWarning)\n"
     ]
    },
    {
     "data": {
      "text/plain": [
       "array([0.86562687, 0.88444422, 0.84552683])"
      ]
     },
     "execution_count": 72,
     "metadata": {},
     "output_type": "execute_result"
    }
   ],
   "source": [
    "# 使用交叉验证评估SGD的准确率\n",
    "cross_val_score(sgd_clf, X_train, y_train, cv=3, scoring=\"accuracy\")"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 73,
   "metadata": {},
   "outputs": [
    {
     "name": "stderr",
     "output_type": "stream",
     "text": [
      "c:\\users\\katie\\appdata\\local\\programs\\python\\python37\\lib\\site-packages\\sklearn\\linear_model\\stochastic_gradient.py:128: FutureWarning: max_iter and tol parameters have been added in <class 'sklearn.linear_model.stochastic_gradient.SGDClassifier'> in 0.19. If both are left unset, they default to max_iter=5 and tol=None. If tol is not None, max_iter defaults to max_iter=1000. From 0.21, default max_iter will be 1000, and default tol will be 1e-3.\n",
      "  \"and default tol will be 1e-3.\" % type(self), FutureWarning)\n",
      "c:\\users\\katie\\appdata\\local\\programs\\python\\python37\\lib\\site-packages\\sklearn\\linear_model\\stochastic_gradient.py:128: FutureWarning: max_iter and tol parameters have been added in <class 'sklearn.linear_model.stochastic_gradient.SGDClassifier'> in 0.19. If both are left unset, they default to max_iter=5 and tol=None. If tol is not None, max_iter defaults to max_iter=1000. From 0.21, default max_iter will be 1000, and default tol will be 1e-3.\n",
      "  \"and default tol will be 1e-3.\" % type(self), FutureWarning)\n",
      "c:\\users\\katie\\appdata\\local\\programs\\python\\python37\\lib\\site-packages\\sklearn\\linear_model\\stochastic_gradient.py:128: FutureWarning: max_iter and tol parameters have been added in <class 'sklearn.linear_model.stochastic_gradient.SGDClassifier'> in 0.19. If both are left unset, they default to max_iter=5 and tol=None. If tol is not None, max_iter defaults to max_iter=1000. From 0.21, default max_iter will be 1000, and default tol will be 1e-3.\n",
      "  \"and default tol will be 1e-3.\" % type(self), FutureWarning)\n"
     ]
    },
    {
     "data": {
      "text/plain": [
       "array([0.90646871, 0.91229561, 0.9106366 ])"
      ]
     },
     "execution_count": 73,
     "metadata": {},
     "output_type": "execute_result"
    }
   ],
   "source": [
    "# 将输入进行简单缩放，可以得到准确率90%以上\n",
    "from sklearn.preprocessing import StandardScaler\n",
    "scaler = StandardScaler()\n",
    "X_train_scaled = scaler.fit_transform(X_train.astype(np.float64))\n",
    "cross_val_score(sgd_clf, X_train_scaled, y_train, cv=3, scoring=\"accuracy\")                    "
   ]
  },
  {
   "cell_type": "markdown",
   "metadata": {},
   "source": [
    "## 错误分析"
   ]
  },
  {
   "cell_type": "markdown",
   "metadata": {},
   "source": [
    "### 项目流程\n",
    "   1. 探索数据准备的选项\n",
    "   2. 尝试多个模型\n",
    "   3. 选择最佳模型并用GridSearchCV对参数进行微调\n",
    "   4. 尽可能自动化"
   ]
  },
  {
   "cell_type": "markdown",
   "metadata": {},
   "source": [
    "### 确定了一个相对合适的模型，进一步优化，分析其错误类型\n",
    "   * 查看混淆矩阵\n",
    "   * 使用cross_val_predict()进行预测\n",
    "   * 调用confusion_matrix()"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 74,
   "metadata": {},
   "outputs": [
    {
     "name": "stderr",
     "output_type": "stream",
     "text": [
      "c:\\users\\katie\\appdata\\local\\programs\\python\\python37\\lib\\site-packages\\sklearn\\linear_model\\stochastic_gradient.py:128: FutureWarning: max_iter and tol parameters have been added in <class 'sklearn.linear_model.stochastic_gradient.SGDClassifier'> in 0.19. If both are left unset, they default to max_iter=5 and tol=None. If tol is not None, max_iter defaults to max_iter=1000. From 0.21, default max_iter will be 1000, and default tol will be 1e-3.\n",
      "  \"and default tol will be 1e-3.\" % type(self), FutureWarning)\n",
      "c:\\users\\katie\\appdata\\local\\programs\\python\\python37\\lib\\site-packages\\sklearn\\linear_model\\stochastic_gradient.py:128: FutureWarning: max_iter and tol parameters have been added in <class 'sklearn.linear_model.stochastic_gradient.SGDClassifier'> in 0.19. If both are left unset, they default to max_iter=5 and tol=None. If tol is not None, max_iter defaults to max_iter=1000. From 0.21, default max_iter will be 1000, and default tol will be 1e-3.\n",
      "  \"and default tol will be 1e-3.\" % type(self), FutureWarning)\n",
      "c:\\users\\katie\\appdata\\local\\programs\\python\\python37\\lib\\site-packages\\sklearn\\linear_model\\stochastic_gradient.py:128: FutureWarning: max_iter and tol parameters have been added in <class 'sklearn.linear_model.stochastic_gradient.SGDClassifier'> in 0.19. If both are left unset, they default to max_iter=5 and tol=None. If tol is not None, max_iter defaults to max_iter=1000. From 0.21, default max_iter will be 1000, and default tol will be 1e-3.\n",
      "  \"and default tol will be 1e-3.\" % type(self), FutureWarning)\n"
     ]
    },
    {
     "data": {
      "text/plain": [
       "array([[5731,    3,   33,   10,   10,   45,   42,    7,   37,    5],\n",
       "       [   1, 6490,   42,   27,    6,   41,   11,   13,  101,   10],\n",
       "       [  51,   39, 5343,   95,   83,   25,   90,   60,  160,   12],\n",
       "       [  47,   41,  142, 5374,    3,  216,   34,   48,  132,   94],\n",
       "       [  19,   30,   36,    7, 5360,    9,   48,   37,   84,  212],\n",
       "       [  69,   43,   33,  192,   76, 4593,  109,   31,  181,   94],\n",
       "       [  34,   22,   46,    2,   43,   91, 5626,   10,   44,    0],\n",
       "       [  24,   24,   65,   30,   58,    9,    5, 5772,   15,  263],\n",
       "       [  58,  169,   79,  155,   14,  149,   59,   25, 4993,  150],\n",
       "       [  41,   34,   33,   86,  150,   34,    2,  190,   73, 5306]],\n",
       "      dtype=int64)"
      ]
     },
     "execution_count": 74,
     "metadata": {},
     "output_type": "execute_result"
    }
   ],
   "source": [
    "y_train_pred = cross_val_predict(sgd_clf, X_train_scaled, y_train, cv=3)\n",
    "conf_mx = confusion_matrix(y_train, y_train_pred)\n",
    "conf_mx"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 75,
   "metadata": {},
   "outputs": [
    {
     "data": {
      "image/png": "iVBORw0KGgoAAAANSUhEUgAAAPkAAAEACAYAAABxpdD1AAAABHNCSVQICAgIfAhkiAAAAAlwSFlzAAALEgAACxIB0t1+/AAAADh0RVh0U29mdHdhcmUAbWF0cGxvdGxpYiB2ZXJzaW9uMy4yLjEsIGh0dHA6Ly9tYXRwbG90bGliLm9yZy+j8jraAAAKaklEQVR4nO3dW4ic5RnA8f+TzcZDazVLrVISBaVXNbQpi1aoRYMVeyHS1tKKKNiW0CLttaUVqRctiHgjRFwPvdGevGhBtGAphEZQSmqQ4KHihSJCsDU9KRizs08vskUbN5lvk++db+fZ/+9qsjN552Ey/3wzszPvRGYiqa4NQw8gqS0jl4ozcqk4I5eKM3KpOCOXijPyDiLizIj4fUQ8GRG/jYhNQ8/URUScExH7hp5jNSJiV0RcM/QcXUTE5oh4IiL2RsR9Q89zLINEHhEPRsTTEfHjIa7/BNwA3J2ZVwEHgKsHnqeru4DThh6iq4i4DDg3Mx8bepaObgQeycx54IyImB96oJVMPPKI+Cowk5mXAhdExKcmPcNqZeauzPzD8h/PBt4ccp4uImIH8A5H/lNa8yJiFrgfeDUirh16no7eAi6KiLOArcDrA8+zoiGO5JcDv1k+/STwhQFmOCERcSmwOTOfGXqW41l+OnEbcOvQs6zCTcALwJ3AxRHx/YHn6eIp4HzgB8CLwMFhx1nZEJF/BHhj+fRB4JwBZli1iJgD7gG+NfQsHdwK7MrMfw49yCpsBxYy8wDwMHDFwPN0cTvw3cy8A3gJuHngeVY0RORv8/7zxI8ONMOqLB8ZHwV+mJmvDT1PB1cCt0TEbuCzEfHAwPN08QpwwfLpeWAabufNwLaImAEuAdbkB0Fi0h9QiYibgE9k5l0R8RPgr5n5i4kOsUoR8T3gp8Bzyz+6NzN/PeBInUXE7sy8fOg5xomIM4CHOPLIbha4LjPfOP7fGlZEXAz8nCMP2Z8GvpKZbw871YcNEfnHgD3AH4EvA5/PzH9NdAhpHZl45HDk94vAl4A/LT8Hk9TIIJFLmpw1/6KXpJNj5FJxg0UeETuHuu4T5cztTdu8sPZnHvJIvqZvmGNw5vambV5Y4zP7cF0qrtdX1+fm5nLLli2dLnvw4EHm5uY6XXb//v0nM5a0LmRmrPTzjX1eyZYtW3j88cf7XBKA8847r/c1/ydixdvlpE3jryZb3RYttbqdW94Wk75v+HBdKs7IpeKMXCrOyKXijFwqzsil4jpFPoW7q0paNjbyadxdVdL7uhzJL2dKd1eV1C3y4+6uGhE7l79BYu/Bg2tyR1ppXesS+XF3V83Mhcycz8z5ru9FlzQ5XSL/C+8/RP8M8GqzaST1rssHVH4H7ImIT7K8u2rbkST1aeyRPDP/zZEX354BrnD7ZGm6dPqoaWb+g/dfYZc0RXzHm1SckUvFGblUnJFLxfW6kWNENNm8quWeWBs2TN//c9O2r9k07nc3MzPTbO3RaNRk3WNt5Dh993BJq2LkUnFGLhVn5FJxRi4VZ+RScUYuFWfkUnFGLhVn5FJxRi4VZ+RScUYuFWfkUnFGLhVn5FJxRi4VZ+RScUYuFWfkUnFGLhVn5FJxnb4LbTVabHHcctvk5557rsm627dvb7JuS622Cm65vXGr7Z6ncUvmY/FILhVn5FJxRi4VZ+RScUYuFWfkUnFGLhVn5FJxY98MExFnAr8CZoB3gG9k5nutB5PUjy5H8huAuzPzKuAAcHXbkST1aeyRPDN3feCPZwNvthtHUt86v3c9Ii4FNmfmM0f9fCews+/BJPWjU+QRMQfcA3zt6PMycwFYWL5cm08LSDphY5+TR8Qm4FHgh5n5WvuRJPWpywtv3wY+B/woInZHxDcazySpR11eeLsXuHcCs0hqwDfDSMUZuVSckUvFGblUnJFLxUWfu11GREZEb+tNwsaNvW9YC8Czzz7bZF2Abdu2NVn31FNPbbLuoUOHmqzbUqv7BcDS0lLva45GIzJzxfg8kkvFGblUnJFLxRm5VJyRS8UZuVSckUvFGblUnJFLxRm5VJyRS8UZuVSckUvFGblUnJFLxRm5VJyRS8UZuVSckUvFGblUnJFLxRm5VFzvWzL3ttj/r9ti2ab6vF2Ptn///ibrttrqeRr//TZsaHf8m52d7X3NQ4cOsbS05JbM0npk5FJxRi4VZ+RScUYuFWfkUnFGLhXXKfKIOCci9rUeRlL/uh7J7wJOazmIpDbGRh4RO4B3gAPtx5HUt+NGHhGbgNuAWyczjqS+bRxz/q3Arsz857HefxwRO4GdfQ8mqR/jHq5fCdwSEbuBz0bEA0dfIDMXMnM+M+dbDCjp5Bz3SJ6ZX/zf6YjYnZnfaT+SpD51/j15Zl7ecA5JjfhmGKk4I5eKM3KpOCOXijNyqTgjl4rrfbfWFrtcttz5tJVNmzY1W/vw4cNN1n3sscearHvttdc2WRdgNBo1Wbflv9/i4mLva45GIzLT3Vql9cjIpeKMXCrOyKXijFwqzsil4oxcKs7IpeKMXCrOyKXijFwqzsil4oxcKs7IpeKMXCrOyKXijFwqzsil4oxcKs7IpeKMXCqu991aj/U95iej5W6tLeaF6Zy5xU67AC+//HKTdQEuvPDCJuu2uo2h3X3D3VqldcrIpeKMXCrOyKXijFwqzsil4oxcKs7IpeI6Rx4RuyLimpbDSOpfp8gj4jLg3Mxs8wXWkpoZG3lEzAL3A69GRLtvk5fURJcj+U3AC8CdwMUR8f0PnhkROyNib0TsbTGgpJPTJfLtwEJmHgAeBq744JmZuZCZ85k532JASSenS+SvABcsn54HXms3jqS+bexwmQeBhyLim8AscF3bkST1aWzkmfkf4OsTmEVSA74ZRirOyKXijFwqzsil4oxcKs7IpeJ635K5t8UmpNU2xNO4JfPS0lKTdVt6/fXXm6y7devWJusCnH766b2v+e677zIajdySWVqPjFwqzsil4oxcKs7IpeKMXCrOyKXijFwqzsil4oxcKs7IpeKMXCrOyKXijFwqzsil4oxcKs7IpeKMXCrOyKXijFwqzsil4nrfrbXF7qcbN3b58tUTMxqNmqw7MzPTZF2A9957r8m6s7OzTdZtdRtDux1m9+zZ02RdgB07dvS+5uLiIktLS+7WKq1HRi4VZ+RScUYuFWfkUnFGLhVn5FJxx408IjZHxBMRsTci7pvUUJL6M+5IfiPwSGbOA2dExPwEZpLUo3GRvwVcFBFnAVuBNl8GLamZcZE/BZwP/AB4ETjYfCJJvRoX+e3AdzPzDuAl4OajLxARO5efs+9tMaCkkzMu8s3AtoiYAS4BPvRplsxcyMz55eftktaYcZH/DFgA/gXMAb9sPpGkXh33M5yZ+Wfg0xOaRVIDvhlGKs7IpeKMXCrOyKXijFwqzsil4oxcKq73LZkjVtwVdt1psTV167UXFxebrNvnfexop5xySpN1Dx8+3GRdgH379vW+5vXXX8/zzz/vlszSemTkUnFGLhVn5FJxRi4VZ+RScUYuFWfkUnFGLhVn5FJxRi4VZ+RScUYuFWfkUnFGLhVn5FJxRi4VZ+RScUYuFWfkUnFGLhXX926tfwNe63jxjwN/7+3KJ8OZ25u2eWFtzHx+Zp690hm9Rr4aEbE3M+cHufIT5MztTdu8sPZn9uG6VJyRS8UNGfnCgNd9opy5vWmbF9b4zIM9J5c0GT5cl4ozcqk4I5eKM3KpOCOXivsvogc+Qkn1s7oAAAAASUVORK5CYII=\n",
      "text/plain": [
       "<Figure size 288x288 with 1 Axes>"
      ]
     },
     "metadata": {
      "needs_background": "light"
     },
     "output_type": "display_data"
    }
   ],
   "source": [
    "# 使用matplotlib的matshow 函数来查看混淆矩阵的图像表示\n",
    "plt.matshow(conf_mx, cmap=plt.cm.gray)\n",
    "plt.show()"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 76,
   "metadata": {},
   "outputs": [
    {
     "data": {
      "text/plain": [
       "array([[9.67583995e-01, 5.06500084e-04, 5.57150093e-03, 1.68833361e-03,\n",
       "        1.68833361e-03, 7.59750127e-03, 7.09100118e-03, 1.18183353e-03,\n",
       "        6.24683437e-03, 8.44166807e-04],\n",
       "       [1.48323939e-04, 9.62622367e-01, 6.22960546e-03, 4.00474637e-03,\n",
       "        8.89943637e-04, 6.08128152e-03, 1.63156333e-03, 1.92821121e-03,\n",
       "        1.49807179e-02, 1.48323939e-03],\n",
       "       [8.55991944e-03, 6.54582075e-03, 8.96777442e-01, 1.59449480e-02,\n",
       "        1.39308493e-02, 4.19603894e-03, 1.51057402e-02, 1.00704935e-02,\n",
       "        2.68546492e-02, 2.01409869e-03],\n",
       "       [7.66595988e-03, 6.68732670e-03, 2.31609852e-02, 8.76529114e-01,\n",
       "        4.89316588e-04, 3.52307943e-02, 5.54558800e-03, 7.82906541e-03,\n",
       "        2.15299299e-02, 1.53319198e-02],\n",
       "       [3.25231085e-03, 5.13522766e-03, 6.16227319e-03, 1.19821979e-03,\n",
       "        9.17494009e-01, 1.54056830e-03, 8.21636426e-03, 6.33344745e-03,\n",
       "        1.43786375e-02, 3.62889421e-02],\n",
       "       [1.27282789e-02, 7.93211585e-03, 6.08743774e-03, 3.54178196e-02,\n",
       "        1.40195536e-02, 8.47260653e-01, 2.01069913e-02, 5.71850212e-03,\n",
       "        3.33886737e-02, 1.73399742e-02],\n",
       "       [5.74518418e-03, 3.71747212e-03, 7.77289625e-03, 3.37952011e-04,\n",
       "        7.26596823e-03, 1.53768165e-02, 9.50659006e-01, 1.68976005e-03,\n",
       "        7.43494424e-03, 0.00000000e+00],\n",
       "       [3.83080607e-03, 3.83080607e-03, 1.03750998e-02, 4.78850758e-03,\n",
       "        9.25778132e-03, 1.43655227e-03, 7.98084597e-04, 9.21308859e-01,\n",
       "        2.39425379e-03, 4.19792498e-02],\n",
       "       [9.91283541e-03, 2.88839515e-02, 1.35019655e-02, 2.64911981e-02,\n",
       "        2.39275338e-03, 2.54657324e-02, 1.00837464e-02, 4.27277388e-03,\n",
       "        8.53358400e-01, 2.56366433e-02],\n",
       "       [6.89191461e-03, 5.71524626e-03, 5.54715078e-03, 1.44562111e-02,\n",
       "        2.52143217e-02, 5.71524626e-03, 3.36190956e-04, 3.19381409e-02,\n",
       "        1.22709699e-02, 8.91914607e-01]])"
      ]
     },
     "execution_count": 76,
     "metadata": {},
     "output_type": "execute_result"
    }
   ],
   "source": [
    "# 看起来不错，大多数图片都在对角线上，说明它们被正确分类\n",
    "# 数字5 看起来比较暗，说明 1）数字5图片比较少 2）分类器在数字5上执行效果不如其他数字好\n",
    "# 假设把焦点放在错误上，未取得错误率，而不是错误绝对值，需要将混淆矩阵中每个值除以相应类别中的图片数量\n",
    "\n",
    "row_sums = conf_mx.sum(axis=1, keepdims=True)\n",
    "norm_conf_mx = conf_mx / row_sums\n",
    "norm_conf_mx"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 77,
   "metadata": {},
   "outputs": [
    {
     "data": {
      "image/png": "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\n",
      "text/plain": [
       "<Figure size 288x288 with 1 Axes>"
      ]
     },
     "metadata": {
      "needs_background": "light"
     },
     "output_type": "display_data"
    }
   ],
   "source": [
    "# 用-填充对角线 只保留错误，重新绘制\n",
    "np.fill_diagonal(norm_conf_mx, 0)\n",
    "plt.matshow(norm_conf_mx, cmap=plt.cm.gray)\n",
    "plt.show()"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 78,
   "metadata": {},
   "outputs": [],
   "source": [
    "# 每行代表实际类别，每列代表预测类别\n",
    "# 8,9列比较亮，说明需对图片被错误的分类为数字8,9\n",
    "# 类别8,9行也偏亮，说明数字8和9经常会跟其他数字混淆\n",
    "# 有些很暗 比如行1，大多数数字1都被正确的分类，一些和8混淆\n",
    "# 5和3是错误最多的"
   ]
  },
  {
   "cell_type": "markdown",
   "metadata": {},
   "source": [
    "## 结论\n",
    "   * 改进数字8和9的分类\n",
    "   * 修正数字3和5的混淆"
   ]
  },
  {
   "cell_type": "markdown",
   "metadata": {},
   "source": [
    "## 如何优化分类器\n",
    "   * 尝试多收集这些数字的训练集\n",
    "   * 开发一些新特征来改进分类器\n",
    "   * 优化分类器算法\n",
    "   * 使用pillow或opencv对图片预处理，让显示模型更突出\n",
    "   * 分析单个错误"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 79,
   "metadata": {},
   "outputs": [
    {
     "data": {
      "image/png": "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\n",
      "text/plain": [
       "<Figure size 576x576 with 4 Axes>"
      ]
     },
     "metadata": {
      "needs_background": "light"
     },
     "output_type": "display_data"
    }
   ],
   "source": [
    "def plot_digits(instances, images_per_row=10, **options):\n",
    "    size = 28\n",
    "    images_per_row = min(len(instances), images_per_row)\n",
    "    images = [instance.reshape(size,size) for instance in instances]\n",
    "    n_rows = (len(instances) - 1) // images_per_row + 1\n",
    "    row_images = []\n",
    "    n_empty = n_rows * images_per_row - len(instances)\n",
    "    images.append(np.zeros((size, size * n_empty)))\n",
    "    for row in range(n_rows):\n",
    "        rimages = images[row * images_per_row : (row + 1) * images_per_row]\n",
    "        row_images.append(np.concatenate(rimages, axis=1))\n",
    "    image = np.concatenate(row_images, axis=0)\n",
    "    plt.imshow(image, cmap = matplotlib.cm.binary, **options)\n",
    "    plt.axis(\"off\")\n",
    "    \n",
    "\n",
    "# 查看数字3和数字5的例子\n",
    "cl_a, cl_b = 3, 5\n",
    "X_aa = X_train[(y_train == cl_a) & (y_train_pred == cl_a)]\n",
    "X_ab = X_train[(y_train == cl_a) & (y_train_pred == cl_b)]\n",
    "X_ba = X_train[(y_train == cl_b) & (y_train_pred == cl_a)]\n",
    "X_bb = X_train[(y_train == cl_b) & (y_train_pred == cl_b)]\n",
    "\n",
    "plt.figure(figsize=(8,8))\n",
    "plt.subplot(221);\n",
    "plot_digits(X_aa[:25], images_per_row=5)\n",
    "plt.subplot(222);\n",
    "plot_digits(X_ab[:25], images_per_row=5)\n",
    "plt.subplot(223);\n",
    "plot_digits(X_ba[:25], images_per_row=5)\n",
    "plt.subplot(224);\n",
    "plot_digits(X_bb[:25], images_per_row=5)\n",
    "plt.show()\n"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 80,
   "metadata": {},
   "outputs": [],
   "source": [
    "# 左侧两个是被分类为3的图片\n",
    "# 右侧两个是被分类为5的图片\n",
    "# 大多数错误分类的图片看起来还是非常明显的错误\n",
    "# 原因：SGD是一个线性模型，它所做就是为每个像素分配一个各个类别的权重，当她看到新的图像，将加权后的像素强度汇总，从而得到一个分数进行分类\n",
    "# 数字3和5在一部分像素位上有区别，所以分类器很容易将其弄混\n",
    "# 通过上面图像，如果书写3 的连接点左移，分类器可能将其分类为数字5，这个分类器对图像位移和旋转敏感\n",
    "# 减少混淆的方法之一，就是对图像进行预处理，确保位于中心位置并且没有旋转"
   ]
  },
  {
   "cell_type": "markdown",
   "metadata": {},
   "source": [
    "## 多标签分类"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 81,
   "metadata": {},
   "outputs": [],
   "source": [
    "# 为每个实例产生多个类别，例如 照片识别多个人脸\n",
    "# 分类器经过训练可以识别小红、小白、小军，一张照片里有小红和小白\n",
    "# 经过分类器，应该输出[1,1,0]，是小红、小白、不是小军\n",
    "# 输出多个二元标签的分类系统成为多标签分类系统"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 82,
   "metadata": {},
   "outputs": [
    {
     "data": {
      "text/plain": [
       "KNeighborsClassifier(algorithm='auto', leaf_size=30, metric='minkowski',\n",
       "           metric_params=None, n_jobs=1, n_neighbors=5, p=2,\n",
       "           weights='uniform')"
      ]
     },
     "execution_count": 82,
     "metadata": {},
     "output_type": "execute_result"
    }
   ],
   "source": [
    "from sklearn.neighbors import KNeighborsClassifier\n",
    "\n",
    "y_train_large = (y_train >= 7)\n",
    "y_train_odd = (y_train % 2 ==1)\n",
    "y_multilabel = np.c_[y_train_large, y_train_odd]\n",
    "\n",
    "knn_clf = KNeighborsClassifier()\n",
    "knn_clf.fit(X_train, y_multilabel)"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 83,
   "metadata": {},
   "outputs": [
    {
     "data": {
      "text/plain": [
       "array([[False,  True]])"
      ]
     },
     "execution_count": 83,
     "metadata": {},
     "output_type": "execute_result"
    }
   ],
   "source": [
    "# knn支持多标签分类，不是所有的分类器都支持\n",
    "knn_clf.predict([some_digit])"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 84,
   "metadata": {},
   "outputs": [],
   "source": [
    "# # 评估多标签分类器方法很多，方法之一就是测量每个标签的F1分数，或者其它二元分类器指标，然后简单平均\n",
    "# y_train_knn_pred = cross_val_predict(knn_clf, X_train, y_multilabel, cv=3)\n",
    "# f1_score(y_multilabel, y_train_knn_pred, average=\"macro\")"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 85,
   "metadata": {},
   "outputs": [],
   "source": [
    "# 上面架设了所有标签都同等重要，也可以给每个标签设置一个等于自身支持的权重（该目标标签实例的数量），设置average=\"weighted\""
   ]
  },
  {
   "cell_type": "markdown",
   "metadata": {},
   "source": [
    "## 多输出分类\n",
    "### 例子：构建一个系统去除图片中的噪声，输入一张有噪声的图片，它将输入一张干净的数字图片，分类器输出是多个标签，一个像素一个标签，每个标签多个只0到255"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 86,
   "metadata": {},
   "outputs": [],
   "source": [
    "# 增加噪声，目标将图片还原为原始图片，创建训练集和测试集\n",
    "noise = np.random.randint(0, 100, (len(X_train), 784))\n",
    "X_train_mod = X_train + noise\n",
    "noise = np.random.randint(0, 100, (len(X_test), 784))\n",
    "X_test_mod = X_test + noise\n",
    "y_train_mod = X_train\n",
    "y_test_mod = X_test"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 87,
   "metadata": {},
   "outputs": [
    {
     "data": {
      "image/png": "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\n",
      "text/plain": [
       "<Figure size 432x288 with 2 Axes>"
      ]
     },
     "metadata": {
      "needs_background": "light"
     },
     "output_type": "display_data"
    }
   ],
   "source": [
    "some_index = 5500\n",
    "plt.subplot(121);plt.imshow(X_test_mod[some_index].reshape(28,28), cmap=matplotlib.cm.binary)\n",
    "plt.subplot(122);plt.imshow(y_test_mod[some_index].reshape(28,28), cmap=matplotlib.cm.binary)\n",
    "plt.show()"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 88,
   "metadata": {},
   "outputs": [],
   "source": [
    "knn_clf.fit(X_train_mod, y_train_mod)\n",
    "clean_digit = knn_clf.predict([X_test_mod[some_index]])"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 89,
   "metadata": {},
   "outputs": [
    {
     "data": {
      "image/png": "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\n",
      "text/plain": [
       "<Figure size 432x288 with 1 Axes>"
      ]
     },
     "metadata": {
      "needs_background": "light"
     },
     "output_type": "display_data"
    }
   ],
   "source": [
    "plt.imshow(clean_digit.reshape(28,28), cmap=matplotlib.cm.binary)\n",
    "plt.show()"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": null,
   "metadata": {},
   "outputs": [],
   "source": []
  }
 ],
 "metadata": {
  "kernelspec": {
   "display_name": "Python 3",
   "language": "python",
   "name": "python3"
  },
  "language_info": {
   "codemirror_mode": {
    "name": "ipython",
    "version": 3
   },
   "file_extension": ".py",
   "mimetype": "text/x-python",
   "name": "python",
   "nbconvert_exporter": "python",
   "pygments_lexer": "ipython3",
   "version": "3.7.7"
  }
 },
 "nbformat": 4,
 "nbformat_minor": 4
}
